为什么这个功能没有实现用户价值?
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 并调用此方法等待。
我正在使用 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 并调用此方法等待。