无法在 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


}

我试过了

1.Initializer's List.

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