繁体   English   中英

无法在初始化程序中访问实例成员“X”。 - Flutter,VoidCallback Function

[英]The instance member 'X' can't be accessed in an initializer. - Flutter, VoidCallback Function

因此,您可能会看到我正在尝试在我的 StatelessWidget 中使用我的 StatefulWidget 的 function addUser 唯一的问题是以下错误 add HomeWidget(addUser: addUser), : The instance member 'addUser' can't be access in an initializer. 你能帮我解决这个问题吗? 非常感谢。

我的 StatefulWidget:


class _HomeStatefulState extends State<HomeStateful> {

  void addUser() {
   //do something
  }

  final List<Widget> _children = [
    HomeWidget(addUser: addUser),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: _children[_currentIndex],
      bottomNavigationBar: BottomNavigationBar(
          currentIndex: _currentIndex,
          onTap: onTabTapped,
          items: [
            BottomNavigationBarItem(
              icon: Icon(Icons.home),
              title: Text("Home"),
              backgroundColor: Colors.blue,
            ),
          ]),
    );
  }
}

无状态小部件:


class HomeWidget extends StatelessWidget {
  const HomeWidget({Key key, @required this.addUser}) : super(key: key);
  final VoidCallback addUser;

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          SafeArea(
              child: Column(
            children: [
              Padding(
                child: FlatButton(
                  onPressed: addUser,
                ),
              ),
            ],
          )),
        ],
      ),
    );
  }
}


在 object 初始化之前,您无法访问addUser 在构造函数中移动引用,例如

  List<Widget> _children;

  _HomeTestState() {
    _children = [
      HomeWidget(addUser: addUser),
    ];
  }

您的问题是您在初始化之前尝试访问 Widget 的 function 。
如果你想为你的 Widget 建立一个“默认”设置,一个好方法是使用 initState 方法。

List<Widget> _children;
  
  @override
  void initState() {
    super.initState();
    _children = [
      HomeWidget(addUser: addUser),
    ];
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM