这是警告:
该类(或该类继承的类)被标记为'@immutable',但是其一个或多个实例字段不是最终的:MyWidget.myVar
控制台告诉我变量必须为final。我怀疑如果我想更改变量,应该将小部件更改为有状态,但是对我来说这没有意义,因为代码按预期工作。当我更改变量时,我不想更改屏幕上的任何内容,我只想稍后使用它。
我在做什么错了?如果没有,如何禁用此警告?
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
home: MyWidget(),
),
);
}
class MyWidget extends StatelessWidget {
String myVar;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
MaterialButton(
child: Text('Click me do change variable'),
onPressed: () {
myVar = 'Clicked!';
},
),
MaterialButton(
child: Text('Click me to print the variable'),
onPressed: () {
print(myVar);
},
),
],
),
);
}
}
您正在得到警告,因为扩展StatelessWidget的类中的所有字段都应为最终字段。
Fix the warning by adding the
final
keyword before thetype
declaration like below:final String myVar;
从文档中。
https://docs.flutter.io/flutter/widgets/StatelessWidget-class.html
我希望这回答了你的问题
在有状态窗口小部件中更改变量值的要点是,您可以调用
这将重建UI,更改Text小部件的内容。
尝试将Text(myVar)添加到您的列中,在无状态小部件中,按一下按钮不会改变。但是在有状态的小部件中,它将改变。