【问题标题】:Flutter Widget not updated by NotifyListenersNotifyListeners 未更新 Flutter Widget
【发布时间】: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(
      ),
    );
  }
}

【问题讨论】:

    标签: flutter flutter-provider flutter-widget flutter-state


    【解决方案1】:

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

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

    【讨论】:

    • 我认为改变这个解决了你的问题?
    • @JeremyCaney 是的
    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2020-07-16
    • 2020-11-19
    • 2021-06-03
    • 1970-01-01
    • 2021-11-12
    • 2021-04-23
    相关资源
    最近更新 更多