微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提供商试图更新我的计数,我何时会收到通知?

如何解决提供商试图更新我的计数,我何时会收到通知?

我无法更新我的用户界面

//// 在这里,我正在控制台中获取更新数据,但无法在我的 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>(
...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。