【发布时间】:2019-07-08 16:51:10
【问题描述】:
我之前已经发布过我仍然面临的这个问题 也就是将数据从有状态小部件返回到无状态小部件
我使用的小部件是 DateTimePickerFormField 小部件,我在有状态小部件中将它用作子部件
所以我看过https://flutter.io/docs/cookbook/navigation/returning-data#complete-example
用于从小部件返回数据。但是,返回数据的小部件是无状态小部件......在我的情况下不是
所以代码如下
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);
},
)
],
),)
,
)
,
);
}
那个小部件正在调用方法:dateAndTimeWidget,它应该返回 dateTime 有状态小部件并将输出的数据保存在一个变量中:
dateAndTimeWidget(BuildContext context) async {
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (context)=> dateTime()),
);
}
那么这是 dateTime Statful 小部件
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
【问题讨论】: