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`不更新列表