为什么这个功能没有实现用户价值?

Why this function doesn't actualize user value?

我正在使用 bloc/cubit 架构编写这个 flutter 应用程序。 我想更改用户值,但功能似乎不起作用。

我要的打印结果是:1-老用户,2-新用户

你能帮我理解为什么吗?

这是我的代码

用户收藏列表

class FavouritesSrcreen extends StatelessWidget {
  const FavouritesSrcreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LayoutCubit, LayoutStates>(builder: (context, state) {
      var cubit = LayoutCubit.get(context);
      return Scaffold(
          body: ListView.separated(
                  ...
                    return ListTile(
                       ...
                        onTap: () {
                          print('1 ' + cubit.user.name);
                          cubit.getUserDataById(
                            cubit.users[index].uid,
                          );
                          print('2 ' + cubit.user.name);
                          cubit.changeIsFavourite();
                        });
                  },
                ));
    });
  }
}

...
  void getUserDataById(String id) {
    emit(LayoutGetUserLoadingState());
    FirebaseFirestore.instance.collection('users').doc(id).get().then((value) {
      user = UserData.fromJson(jsonDecode(jsonEncode(value.data())));
      emit(LayoutGetOtherUserSuccessState());
    }).catchError((error) {
      print(error.toString());
      emit(LayoutGetOtherUserErrorState(error.toString()));
    });
  }
...

您需要在主线程中使用 await 调用以下方法 (FirebaseFirestore.instance.collection('users').doc(id).get()) 并将 getUserDataById 转换为 future 并调用此方法等待。