flutter/getx 如何初始化可空对象observable

flutter/getx how to initialize nullable obejct observable

假设我有这样的控制器:

class ProfileController extends GetxController {
  Rx<UserFacebookInfo?>  facebookInfo = null.obs;

  void facebookSync() async {
    //
    // logic to get user info from facebook
    //

    facebookInfo.value = UserFacebookInfo.fromFacebookApi(userData);
    // facebookInfo = UserFacebookInfo.fromFacebookApi(userData).obs;  <=== also tried this
      update();
    }
  }
}

在小部件中我有这样的东西:

Widget buildFacebook() =>  Padding(
      padding: const EdgeInsets.only(top: 30.0, right: 20.0, left: 20.0, bottom: 10.0),
      child: Obx(() => (_profileController.facebookInfo.value == null)  ? Column(
        children:  [
        IconButton(
          icon : const Icon(Icons.facebook_outlined, size: 40.0),
          onPressed: () => _profileController.facebookSync()
        ),
          const Text(
            'Facebook',
            style: TextStyle(color: Colors.white),
          )
        ],
      ) :
      Column(
        children: [
          UserProfileAvatar(
            avatarUrl: _profileController.facebookInfo.value!.facebookAvatar,
            radius: 40,
          ),
          Text(
            _profileController.facebookInfo.value!.name,
          style: const TextStyle(color: Colors.white),
          )
        ],
      )
  ));

并且因为初始值可以为空,所以它无法正常工作并且不会即时更改小部件,但前提是我从 android studio 更新它。初始化它的正确方法是什么???我有类似的情况,可以观察到可为空的字符串,所以我能够将它初始化为 String string (null as String?).obs` 感谢您的任何建议

您可以使用 Rxn<Type>().

初始化可为空的可观察对象

因此使用这个:

 final facebookInfo= Rxn<UserFacebookInfo>();