NotifyListeners 未更新 Flutter Widget

Posted

技术标签:

【中文标题】NotifyListeners 未更新 Flutter Widget【英文标题】:Flutter Widget not updated by NotifyListeners 【发布时间】:2021-12-23 09:51:02 【问题描述】:

尽管 groupValue 已更新,但我有一个单选按钮未在通知侦听器上更新,单选按钮未更新。我使用多提供者。

这是电台选择

ListTile(
              leading: Icon(
                 Icons.edit_outlined,
              ),
              title: Text('Post now'),
              trailing: Radio<PostOption>(
                value: PostOption.now,
                groupValue: Provider.of<Post>(context).postOption,
                onChanged: (value) 
                  Provider.of<Post>(context, listen: false)
                      .choosePostOption(value);
    
                ,
              ),
            ),
            ListTile(
              leading: Icon(
                Icons.drive_folder_upload,
              ),
              title: Text('Save as Draft'),
              trailing: Radio<PostOption>(
                value: PostOption.draft,
                groupValue: Provider.of<Post>(context).postOption,
                onChanged: (value) 
                  Provider.of<Post>(context, listen: false)
                      .choosePostOption(value);
            
                ,
              ),
            ),

这里是提供者类

class Post extends ChangeNotifier 
  PostOption postOption;

  void choosePostOption(PostOption option) 
    postOption = option;
    notifyListeners();
  


这是我设置提供程序的主要位置

class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MultiProvider(
      providers: [
        
        Provider<Post>(
          create: (context) => Post(),
        ),
        Provider<Content>(
          create: (context) => Content(),
        ),
       
      ],
      child: MaterialApp(
      ),
    );
  

【问题讨论】:

【参考方案1】:

我意识到我应该使用ChangeNotifierProvider 而不是Provider

 return MultiProvider(
      providers: [
        
        ChangeNotifierProvider<Post>(
          create: (context) => Post(),
        ),
        ChangeNotifierProvider<Content>(
          create: (context) => Content(),
        ),
       
      ],

【讨论】:

我认为改变这个解决了你的问题? @JeremyCaney 是的

以上是关于NotifyListeners 未更新 Flutter Widget的主要内容,如果未能解决你的问题,请参考以下文章

未处理异常:DatabaseException(Error Domain=FMDatabase Code=26 "file is not a database"。更新到 Flutt

Flutter:`notifyListeners`不更新列表

为啥 notifyListeners() 不更新消费者?

提供者 NotifyListeners 不更新消费者

Provider 调用 notifyListeners() 时 Flutter View 不更新视图

颤振 notifyListeners 似乎不起作用