我的问题与提供者模式/库有关。
我创建了一些状态类如下(我替换了内容/变量名称以保持简单)
class State1 with ChangeNotifier{
String _s;
set s(String newS){
_s = newS;
notifyListeners();
}
}
然后我使用 multiprovider 来传递它(在小部件 init 中创建对象,它充当应用程序中所有内容的父级。)
child: MultiProvider(
providers: [
ChangeNotifierProvider(builder: (context) => state1),
],
child: Stack(
alignment: Alignment.center,
children: stackChildren,
),
然后在子小部件构建方法中使用
state1Var = Provider.of<State1>(context);
所有这一切都很好..
我的问题是当我开始使用导航推送时,我无法再访问该状态。
onPressed: (() {
Navigator.push(
contextField,
MaterialPageRoute(builder: (context) => NewPage()),
);
}),
当我得到这个错误
Could not find the correct Provider<State1> above this NewPage Widget...
我确实设法使用它来获得它
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Consumer(builder: (),child: NewPage(),)),
);
但是当我使用 navigator.pop() 弹出小部件时,无法使用该状态,因为它说它已被处置。我做错了还是我错过了什么?
对不起,如果我把这个弄复杂了。我不得不删除很多代码。
谢谢你的帮助 :)