解决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<MyHomePage> {
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<MyHomePage> {
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.
);
}
}