如何在颤动中发送有状态的小部件数据?

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,
      ),
    );