我之前发布过关于我仍在面临的问题的帖子,即如何将Stateful Widget中的数据返回到Stateless Widget。
我正在使用DateTimePickerFormField Widget,并将其作为Stateful Widget的子级使用。
因此,我查看了https://flutter.io/docs/cookbook/navigation/returning-data#complete-example来了解从widget返回数据的方法。然而,返回数据的widget是无状态的... 而在我的情况下不是这样的。
所以代码如下:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Add a Reminder'),
),
body:
new Container(
padding: new EdgeInsets.all(20.0),
child: new Form(
child: new ListView(
children: <Widget>[
new TextFormField(
keyboardType: TextInputType.text,
// Use email input type for emails.
decoration: new InputDecoration(
hintText: 'Title of reminder',
),
),
dateAndTimeWidget(context),
RaisedButton(
child: Text('Save'),
onPressed: () {
Navigator.pop(context);
},
)
],
),)
,
)
,
);
}
那个 Widget 正在调用方法:dateAndTimeWidget,其应返回 dateTime stateful widget 并将输出数据保存到一个变量中。
那个 Widget 正在调用方法:dateAndTimeWidget,其应返回 dateTime stateful widget 并将输出数据保存到一个变量中:
dateAndTimeWidget(BuildContext context) async {
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (context)=> dateTime()),
);
}
那么这是日期时间状态小部件
class dateTime extends StatefulWidget{
@override
dateTimeState createState() => dateTimeState();
}
class dateTimeState extends State<dateTime>{
static DateTime dateT;
InputType inputType = InputType.both;
final formats = {
InputType.both: DateFormat("EEEE, MMMM d, yyyy 'at' h:mma"),
InputType.date: DateFormat('yyyy-MM-dd'),
InputType.time: DateFormat("HH:mm"),
};
Widget build(BuildContext context) => Container(
child: DateTimePickerFormField(
inputType: InputType.both,
editable: true,
format: formats[inputType],
decoration: InputDecoration(
labelText: 'Date/Time', hasFloatingPlaceholder: false),
onChanged: (dt) {
setState(() => dateT = dt);
Navigator.of(context).pop(dateT);
},
)
);
}
我尚未使用该值结果,因为错误在于我从未进入添加提醒页面,而且它显示结果推送导航方法指向 null。