我正在尝试理解 Flutter 中的 ScopeModel,并且需要一些帮助来了解如何从不同页面上的模型访问值
我的主页有一个底部导航栏,点击时只显示搜索页面。我用 ScopeModel 包装了小部件树并添加了模型。
计数正在增加,但我不确定如何从搜索页面访问它
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
ScopeCounter sc;
@override
void initState() {
super.initState();
sc = new ScopeCounter();
}
final List<Widget> _children = [
..
Search()
];
var _currentIndex = 0;
@override
Widget build(BuildContext context) {
return ScopedModel(
model:sc ,
child: Scaffold(
appBar: AppBar(
title: Center(child: Text("test")),
),
drawer: JobsDrawer(),
body: _children[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
onTap: onTabTapped, // new
currentIndex: _currentIndex, // new
items: [
new BottomNavigationBarItem(
icon: new Icon(Icons.search),
title: new Text("search"),
)
])),
);
}
void onTabTapped(int index) {
setState(() {
sc.increment();
print(sc.counter1.count);
_currentIndex = index;
});
}
}
这是我的模型
class ScopeCounter extends Model {
Counter counter1 = Counter();
increment() {
counter1.count += 1;
}
}
class Counter {
int count = 1;
}
搜索页面
class Search extends StatefulWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Form(
...
}
}
我想从“搜索”页面访问计数。
谢谢你的帮助
最佳答案
您只需使用 ScopedModelDescendant 小部件包装您的 SearchPage 小部件(在本例中为脚手架)。这使您可以访问 ScopedModel。
可以在文档中找到很好的解释:https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple
编辑:此外,您的 ScopedModel 必须是两者的父级:MyHomePage 和 Search。
关于dart - Flutter:如何访问子页面中的 ScopeModel 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56175210/