flutter - Flutter/Dart:将参数传递给有状态的小部件?
问题描述
我需要调用将我的title
和oldtitle
参数传递给我的EditPage
有状态小部件。但是,如果我这样做;
class EditPage extends StatefulWidget {
String title;
String oldtitle;
EditPage({this.title, this.oldtitle})
widget.title
除非我将它们称为and ,否则这些字符串对构建不可用 widget.oldtitle
。
但是textfield
如果我使用这些小部件,我正在使用一个似乎无法正常工作的表单。
这是表单代码:
Container(
child: TextField(
decoration: new InputDecoration(
hintText: widget.oldtitle,
contentPadding: new EdgeInsets.all(1.0),
border: InputBorder.none,
filled: true,
fillColor: Colors.grey[300],
),
keyboardType: TextInputType.text,
autocorrect: false,
onChanged: (titleText) {
setState(() {
widget.title= titleText;
});
},
),
),
但是,如果我这样做;
class _EditPageState extends State<EditPage> {
String title;
String oldtitle;
EditPage({this.title, this.oldtitle})
我无法从另一个屏幕将标题参数传递给它。IE:
`EditPage(title:mytitle, oldtitle:myoldtitle);`
那么将参数传递给有状态小部件的正确方法是什么?
解决方案
你不应该直接将变量传递给状态,因为它不能保证当状态更新时小部件会被重建。您应该通过有状态小部件接受参数,并通过widget.variable
.
例子:
class TestWidget extends StatefulWidget {
final String variable;
TestWidget({Key key, @required this.variable}) : super(key: key);
@override
_TestWidgetState createState() => _TestWidgetState();
}
class _TestWidgetState extends State<TestWidget> {
@override
Widget build(BuildContext context) {
return Container(
child: Center(
// Accessing the variables passed into the StatefulWidget.
child: Text(widget.variable),
),
);
}
}
推荐阅读
- swift - 为什么我的 collada DAE 角色在 Xcode 上是绿色的?
- c# - Unity 3D:协程武器动画不会多次执行
- python - PIL 的 Image.fromarray 函数()让我很困惑
- r - 是否可以将参考列的值返回到 r 中的多个列
- azure-functions - Azure Functions 预编译 F# CosmosDBTrigger 环境配置
- excel - VBA 代码在星期一至星期五间隔刷新工作表
- python-3.x - Django allauth url 产生 404
- f# - F# Fake 在 WSL2 中运行可解析宿主 Windows 中的程序路径,而不是 Linux
- scala - 如何使用具有复杂字段的自定义模式有效地触发读取源数据?
- python - 使用某些参数搜索数据框并存储相关值