【问题标题】:How to send stateful widget data in flutter?如何在颤动中发送有状态的小部件数据?
【发布时间】:2021-10-11 11:04:13
【问题描述】:

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

我尝试传输小部件数据,但出现错误。

这是使用底部导航栏时屏幕切换的参数数据。

我们应该如何修复错误?我无法支持此解决方案。

【问题讨论】:

    标签: flutter dart statefulwidget


    【解决方案1】:

    pageIdx 之后添加! 以确保空安全

    return Scaffold(
          body: screens[pageIdx!],  // add !
          bottomNavigationBar: BottomNavigationBar(
            items: <BottomNavigationBarItem>[
              ...
            ],
            currentIndex:pageIdx!,  // add ! 
            onTap: _onItemTapped,
          ),
        );
    

    【讨论】:

    • 我在 _MainContents 类中更改了 pageIdx 变量。非常感谢。
    猜你喜欢
    • 2019-12-20
    • 2020-08-06
    • 2020-08-01
    • 1970-01-01
    • 2020-11-15
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    相关资源
    最近更新 更多