问题描述
我无法更新我的用户界面
//// 在这里,我正在控制台中获取更新数据,但无法在我的 UI 内部进行更新
我的 NotificationCountClass
class NotificationCount extends ChangeNotifier{
var count;
NotificationCount({
this.count =0,});
addNotificationCount(){
count++;
notifyListeners();
print("Notification Count $count");
}
}
main :在这里我将小部件包装在 multiprovider 中,以便我可以在我的应用程序中的任何位置使用它
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => AppService()),ChangeNotifierProvider(create: (context) => NotificationCount()),],child: Consumer<AppService>(
builder: (context,appService,child) {
return GetMaterialApp(
title: AppStrings.APP_TITLE,theme: AppTheme.lightTheme,darkTheme: AppTheme.dartTheme,navigatorKey: GlobalVariable.navigatorKey,supportedLocales: [
Locale('en'),localizationsDelegates: [
CountryLocalizations.delegate,themeMode: appService.isDarkMode ? ThemeMode.dark : ThemeMode.light,initialRoute: AppRouter.SPLASH_SCREEN,onGenerateRoute: AppRouter.router.generator,// routes: {
// "/":(context) =>Home(),// "/AppChat" : (context) => AppChat(),// },debugShowCheckedModeBanner: false,// home: AppChat(),);
},),);
// 将状态与消费者小部件一起使用,以便只需要重新构建小部件
Consumer<NotificationCount>(
builder: (context,value,child) {
var count = value.count;
print("Count of Not : $count");
return Text(
"$count",style: TextStyle(
color: Colors.white,);
},
使用提供程序获取 NotificationCount 类,但仍然无法更新 UI
final notificationCount = Provider.of<NotificationCount>(context,listen: false);
解决方法
我可以在我这边重现您的问题,并且可以通过使用 MultiProvider 的构建器而不是 child 来修复它。
代替
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => AppService()),ChangeNotifierProvider(create: (context) => NotificationCount()),],child: Consumer<AppService>(
写一些类似的东西:
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => AppService()),builder: (context,_) => Consumer<AppService>(
...