如何在颤动中发送有状态的小部件数据?
How to send stateful widget data in flutter?
class Body extends StatefulWidget {
int? pageIdx;
Body({@required this.pageIdx});
@override
State<StatefulWidget> createState() => _MainContetns(pageIdx: pageIdx);
}
class _MainContetns extends State<Body> {
int? pageIdx;
_MainContetns({this.pageIdx});
void initState() {
pageIdx = widget.pageIdx;
}
final screens = [
...
];
@override
Widget build(BuildContext context) {
void _onItemTapped(int index) {
setState(() {
pageIdx = index;
if (index == 2) {
Navigator.push(
context,
PageTransition(
type: PageTransitionType.topToBottom, child: Home()));
}
});
}
return Scaffold(
body: screens[pageIdx], -- error
bottomNavigationBar: BottomNavigationBar(
items: <BottomNavigationBarItem>[
...
],
currentIndex: pageIdx, -- error
onTap: _onItemTapped,
),
);
}
}
我尝试传输小部件数据,但出现错误。
这是使用底部导航栏进行屏幕切换的参数数据。
我们应该如何修复错误?我找不到这个解决方案。
在 pageIdx
之后添加 !
以确保零安全
return Scaffold(
body: screens[pageIdx!], // add !
bottomNavigationBar: BottomNavigationBar(
items: <BottomNavigationBarItem>[
...
],
currentIndex:pageIdx!, // add !
onTap: _onItemTapped,
),
);
class Body extends StatefulWidget {
int? pageIdx;
Body({@required this.pageIdx});
@override
State<StatefulWidget> createState() => _MainContetns(pageIdx: pageIdx);
}
class _MainContetns extends State<Body> {
int? pageIdx;
_MainContetns({this.pageIdx});
void initState() {
pageIdx = widget.pageIdx;
}
final screens = [
...
];
@override
Widget build(BuildContext context) {
void _onItemTapped(int index) {
setState(() {
pageIdx = index;
if (index == 2) {
Navigator.push(
context,
PageTransition(
type: PageTransitionType.topToBottom, child: Home()));
}
});
}
return Scaffold(
body: screens[pageIdx], -- error
bottomNavigationBar: BottomNavigationBar(
items: <BottomNavigationBarItem>[
...
],
currentIndex: pageIdx, -- error
onTap: _onItemTapped,
),
);
}
}
我尝试传输小部件数据,但出现错误。
这是使用底部导航栏进行屏幕切换的参数数据。
我们应该如何修复错误?我找不到这个解决方案。
在 pageIdx
之后添加 !
以确保零安全
return Scaffold(
body: screens[pageIdx!], // add !
bottomNavigationBar: BottomNavigationBar(
items: <BottomNavigationBarItem>[
...
],
currentIndex:pageIdx!, // add !
onTap: _onItemTapped,
),
);