无法在 Dart 中初始化静态成员
Unable to initialize static member in Dart
我看过类似的问题
但是我还是无法解决问题
我正在将具有 Ip 字符串的 Ip 对象从一个屏幕发送到另一个屏幕。
这是第二个屏幕的小部件和状态class。
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
}
我试过了
2.Converting final 到静态成员,然后在 initState 中分配 ip 值确实有效。
但是调用initState时设置了值,但我想在initState之前设置值。
我应该怎么做?
这里有很多选项...我不确定哪一个最适合你的情况,但我通常使用第二个,因为我不喜欢引用 'widget' 对象一直处于状态:
选项 1:将 'ip' 转换为字段
class _DrawingPageState extends State<DrawingPage> {
String get ip => widget.ipObj.ip;
}
方案二:在状态的构造函数中传递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;
}
}
我看过类似的问题
但是我还是无法解决问题
我正在将具有 Ip 字符串的 Ip 对象从一个屏幕发送到另一个屏幕。
这是第二个屏幕的小部件和状态class。
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
}
我试过了
2.Converting final 到静态成员,然后在 initState 中分配 ip 值确实有效。
但是调用initState时设置了值,但我想在initState之前设置值。
我应该怎么做?
这里有很多选项...我不确定哪一个最适合你的情况,但我通常使用第二个,因为我不喜欢引用 'widget' 对象一直处于状态:
选项 1:将 'ip' 转换为字段
class _DrawingPageState extends State<DrawingPage> {
String get ip => widget.ipObj.ip;
}
方案二:在状态的构造函数中传递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;
}
}