我也看过类似的问题
但我仍然无法解决这个问题。
我是把Ip字符串的Ip对象从一个屏幕发送到另一个屏幕。
这里是第二屏的widget和状态类的简称。
class DrawingPage extends StatefulWidget {
Ip ipObj;
// String ipObj;
DrawingPage({Key key, @required this.ipObj});
_DrawingPageState createState() => _DrawingPageState();
}
class _DrawingPageState extends State<DrawingPage> {
final String ip = widget.ipObj.ip; //Error at "widget": Only Static members can be accessed in initializers
}
我已经尝试了
1.初始化器的列表.
2.将final转换为静态成员,然后在initState中分配ip值,确实可行。
但是在调用initState的时候会设置值,但是我想在initState之前设置值。
我应该怎么做呢?
这里有很多选项...... 我不知道哪种方案最适合你的情况,但我通常使用第二种方案,因为我不喜欢一直在状态中引用'widget'对象。
选项1: 将 "ip "转换为一个字段。
class _DrawingPageState extends State<DrawingPage> {
String get ip => widget.ipObj.ip;
}
方案2:在状态的构造函数中传递ipObj。
class DrawingPage extends StatefulWidget {
Ip ipObj;
DrawingPage({Key key, @required this.ipObj});
_DrawingPageState createState() => _DrawingPageState(ipObj);
}
class _DrawingPageState extends State<DrawingPage> {
String ip;
DrawingPageState(Ip ipObj){
ip = ipObj.ip;
}
}