[英]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.