解决Only static members can be accessed in initializers问题

如下所示代码,我想在_MyHomePageState中创建一个Text成员变通,通过_getText()方法获取text显示的文本内容

但是在Text(_getText())处却报Only static members can be accessed in initializers错误

class _MyHomePageState extends State {

  Text text = Text(_getText());

  String _getText() {
    return '野猿新一';
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: text, // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

方法一

根据报错提示的字面意思大概是说在构造函数内只能调用static静态方法

那我们就把_getText()改成static方法试下,结果果真不报错了

static String _getText() {
  return '野猿新一';
}

方法二

第二种方法就是Text在使用的时候再创建,而不是在_MyHomePageState对象创建的时候就创建

如下代码也可以解决问题

class _MyHomePageState extends State {

  String _getText() {
    return '野猿新二';
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Text(_getText()), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

 

你可能感兴趣的:(Flutter,Flutter,initializer)