我有一个应用程序,可以在登录后路由到"main app"页面.此应用程序包含一个底部导航栏,其中显示相应按下的图标的页面.我想将类型为Map<String, dynamic>
的数据传递到这些页面,但遇到了问题.此映射由一个函数生成,该函数从服务器获取数据,将其保存到共享首选项,然后加载共享首选项并将其作为映射返回(所有内容都包含在getData()
中).我希望传递此映射,这样我就不必每次都加载共享首选项,但也会在需要时随共享首选项一起更新此映射(可能是某个页面上的操作).
class MainApp extends StatefulWidget {
@override
_MainAppState createState() => _MainAppState();
}
class _MainAppState extends State<MainApp> {
Map<String, dynamic> Data;
StartFunc() async {
Data = await getData();
setState(() {});
}
@override
void initState() {
StartFunc();
super.initState();
}
var _pages = [
PageOne(Data:Data),
PageTwo(),
PageThree(),
PageFour(),
PageFive(),
];
int _currentIndex = 0;
onTabTapped(int index) {
setState(() {
_currentIndex = index;
});
}
@override
Widget build(BuildContext context) {
return _currentIndex == 2
? PageTwo()
: Scaffold(
body: _pages[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
items: [
BottomNavigationBarItem(
icon: Icon(Icons.library_books), title: Text('')),
BottomNavigationBarItem(
icon: Icon(Icons.notifications), title: Text('')),
BottomNavigationBarItem(
icon: Icon(Icons.add_circle_outline), title: Text('')),
BottomNavigationBarItem(
icon: Icon(Icons.mail), title: Text('')),
BottomNavigationBarItem(
icon: Icon(Icons.person), title: Text('')),
],
onTap: onTabTapped,
currentIndex: _currentIndex,
),
);
}
}
我收到一个错误,说是Only static members can be accessed in initializers.我想知道继承的小部件或其他设计模式(如作用域模型和块)是否有帮助,但不确定这是不是正确的方法.我也不确定在这种情况下我将如何开始实现它们.