当调用另一个类时,我想使用一个参数来初始化该类,其形式通常与Widget一样。
在使用StatefulWidget
进行此操作时,我创建了一个自定义Instantiater,就像使用C#或其他语言(比Dart更了解)一样,我将参数传递给了类的属性。
有状态类给了我一条蓝色的波浪线,并说我应该在一个有效的“ @immutable class”中初始化属性,但是我讨厌蓝色的波浪线。
是否有更好的方法将参数传递给有状态类?
class CreateTest extends StatefulWidget {
DemandRecord _demandRecord;
BuildContext _buildContext;
@override
State<StatefulWidget> createState() {
return CreateTestState(_buildContext,_demandRecord);
}
CreateTest()
{
}
CreateTest.start(BuildContext context, DemandRecord demandRecord) {
_buildContext = context;
_demandRecord = demandRecord;
}
}
我只想将其转发...
这是错误==>
该类(或该类继承的类)被标记为“ @immutable”,但其一个或多个实例字段不是最终的:
杰米
答案 0 :(得分:2)
这是使用documentation中提供的类似结构来实现您要执行的操作的正确方法:
import 'package:flutter/material.dart';
class CreateTest extends StatefulWidget {
final DemandRecord demandRecord;
final BuildContext buildContext;
CreateTest({Key key, this.demandRecord, this.buildContext}) : super(key: key);
@override
_CreateTestState createState() => _CreateTestState();
}
class _CreateTestState extends State<CreateTest> {
@override
Widget build(BuildContext context) {
// TODO: implement build
return null;
}
}
然后在您要调用它时:
CreateTest(demandRecord: record, buildContext: context);
答案 1 :(得分:0)
对于那些以后会读这篇文章的人,几个月后,我发现了如何去做我真正想做的事情,但是却不知道如何做。
在控制器的实现中有一个名为# widget #的参数,可用于返回创建状态控制器的小部件。
import 'package:flutter/material.dart';
class CreateTest extends StatefulWidget {
final DemandRecord demandRecord;
final BuildContext buildContext;
CreateTest({Key key, this.demandRecord, this.buildContext}) : super(key: key);
@override
_CreateTestState createState() => _CreateTestState();
}
class _CreateTestState extends State<CreateTest> {
@override
Widget build(BuildContext context) {
// TODO: implement build
//我想回到班级并获得需求记录通知 //“小工具”。
Colors localColor = widget.demandRecord.color;
if (localColor == Colors.blue)
// act on local Color here and notice widget. gave access to
// parameters passed into StatefulWidget
return null;
}
}