【发布时间】:2021-06-16 12:31:54
【问题描述】:
我是 Flutter 的新手,目前正在与 Providers 合作。我正在从 api 中提取一些静态数组列表并将其保存到提供程序。我让用户从此列表中选择并附加到他使用表单创建的项目。
因此,每次用户尝试创建新项目时,他/她都应该看到选择设置为 false 的静态列表。
但是,提供者数组变量会在调用 setState 时自动更新。以下是我面临的问题..
main.dart
MultiProvider(
providers: [
ChangeNotifierProvider<Info1Class>(
create: (ctx) => Info1Class(),
),
ChangeNotifierProvider<Info2Class>(
create: (ctx) => Info1Class(),
),
],
child: MaterialApp(
在我的 Stateful 小部件中的 build 方法中。我正在获取这样的提供者详细信息。
screenArray.clear();
final t = Provider.of<Info1Class>(context, listen: false).dataArray;
screenArray.addAll(t);
每当我调用 setState 来更新 screenArray 的元素时,提供程序数据也会更新。
setState(() {screenArray[0].selected = true})
在 setState() 之后,如果我打印 Provider dataArray 的第一个元素,它显示为 true。
print(Provider.of<Info1Class>(context, listen: false).dataArray[0].selected)
我的依赖
provider: ^4.3.2+4
有没有办法避免 Provider 数据被更新而只更新我的 Stateful Widget 中的变量?
如果我遗漏了什么,请告诉我。感谢您的帮助。
【问题讨论】:
-
我只在 List 数据类型中遇到同样的错误,即使在 provider 和 getx 中,setState 上的数据也会自动更改