我flutter_lints在我的项目中安装了插件,安装后它显示一条警告消息“不要在 createState 中放置任何逻辑”。如何解决这个问题?
class OverviewPage extends StatefulWidget {
final int id;
const OverviewPage({Key? key, required this.id}) : super(key: key);
@override
_OverviewPageState createState() => _OverviewPageState(id); // Warning on this line
}
class _OverviewPageState extends State<OverviewPage>{
late final int id;
_OverviewPageState(this.id);
}
Run Code Online (Sandbox Code Playgroud)
mmc*_*n20 47
不要_OverviewPageState在构造函数中传递任何内容。
class OverviewPage extends StatefulWidget {
final int id;
const OverviewPage({Key? key, required this.id}) : super(key: key);
@override
_OverviewPageState createState() => _OverviewPageState();
}
class _OverviewPageState extends State<OverviewPage>{
// if you need to reference id, do it by calling widget.id
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我有人想在主类中启动一个变量,您可以使用它,因为您不能在构造函数类中使用它。
@override
void initState() {
super.initState();
id = widget.id;
code = widget.code;
//your code here
}
Run Code Online (Sandbox Code Playgroud)
我想合并您收到的两个答案会更好。
@mmcdon20是对的,您不必将任何参数传递给状态构造函数,因为正如@Mohamed所说,您可以使用 widget 参数或在 的构造函数中通过 init_state 来完成此操作_OverviewPageState。
我只是在这里对答案进行融合,以便对于那些刚接触 Flutter 的人来说更加准确。
最终结果应如下所示:
class OverviewPage extends StatefulWidget {
final int id;
const OverviewPage({Key? key, required this.id}) : super(key: key);
@override
_OverviewPageState createState() => _OverviewPageState();
}
class _OverviewPageState extends State<OverviewPage>{
late int idCopy;
// the 'late' keyword is necessary because otherwise Flutter would expect
// an initialization of the value from a Constructor that accept 'int id'
// as a parameter which is what we are trying to avoid because it's not the
// correct path to follow when you initialize a State of StatefulWidget
@override
void initState() {
super.initState();
idCopy = widget.id;
//your code here
}
}
Run Code Online (Sandbox Code Playgroud)
或者,使用构造函数
class _OverviewPageState extends State<OverviewPage>{
late int idCopy;
_OverviewPageState() {
idCopy = widget.id; // here it is :)
}
}
Run Code Online (Sandbox Code Playgroud)
希望能解答新人的疑惑:)
致谢:@Mohamed_Hammane、@mmcdon20
| 归档时间: |
|
| 查看次数: |
13567 次 |
| 最近记录: |