我是使用Flutter的新手,我现在正努力了解如何使用Provider包完成以下任务,或者甚至一开始是否是正确的实现。
我有一个小部件,其内部使用另一个小部件来更新时间值。
在父窗口小部件中,我具有以下内容:
class _AddTimesScreenState extends State<AddTimesScreen> {
List<TimeOfDay> times = [];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Provider<List<TimeOfDay>>.value(
value: times,
child: SetTimes()
在第二个小部件中,该小部件用于通过使用我拥有的时间选择器来更新时间列表:
class _SetTimesState extends State<SetTimes> {
@override
Widget build(BuildContext context) {
final times = Provider.of<List<TimeOfDay>>(context);
本质上,我的目标是能够更新第二个小部件中的时间列表,以便可以在第一个小部件中使用它。我有一些方法可以将TimeOfDay对象添加到列表中,但是运行代码时,第一个小部件中的列表似乎没有更新。
我是按预期的方式使用Provider还是完全误解了其应用程序?
谢谢
答案 0 :(得分:1)
在 TimeOfDay 类中,确保您要使用Change Notifier对其进行扩展。
提供商如何知道它必须重建?
当类(在您的情况下为TimeOfDay)扩展ChangeNotifier时,将为您提供一个名为 notifylisteners()的方法,这将触发所有使用提供程序的小部件的重建。因此,您应该在更改类TimeOfDay中的对象数据的函数中调用此函数。
因此请确保您是
示例:
class MyClass extends ChangeNotifier{
int a = 0;
addSomething(){
//Here we are changing data
a = a + 1;
notifylisteners();
}
}
让我知道这是否可以解决您的错误。