gpt4 book ai didi

flutter - 多次使用showTimePicker给多个变量赋值时间

转载 作者:行者123 更新时间:2023-12-04 03:46:09 24 4
gpt4 key购买 nike

我正在使用 showTimePicker 从用户那里获取时间。我可以随心所欲地获取时间并将其分配给变量time。问题是,在我的代码中会有很多实例,我想获取时间但将其设为一个全新的变量,time2time3 或其他变量。在我的代码中,每当我调用函数 selectTime() 时,它只会为一个变量 time 设置值。我也不确定它如何影响 timeOfDay picked;。我可以通过为每个变量编写一个新的 selectTime() 函数来解决这些问题,但这似乎是糟糕的编程。

如何更改我的代码,以便可以在不更改其他变量时间的情况下为任何变量分配新时间。我对 flutter 还很陌生,非常感谢任何帮助。

下面是我的代码。当然,我还有另一个用于更改 time2 的凸起按钮。

干杯

import 'dart:async';

void main(){
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Troponin Algorithm',
home: CustomForm(),
);
}
}

class CustomForm extends StatefulWidget {
@override
_CustomFormState createState() => _CustomFormState();
}

class _CustomFormState extends State<CustomForm> {

timeFormatter(number) {
//String str;
if (number > 9) {
return number.toString();
}
else {
//str = '0'+number.toString();
return '0'+number.toString();
}
}

TimeOfDay time = TimeOfDay.now();
TimeOfDay time2 = TimeOfDay.now();
TimeOfDay picked;
String hour;
String mins;
String hour2;
String mins2;

Future<Null> selectTime(BuildContext context) async {
picked = await showTimePicker(
context: context,
initialTime: time,
);
if (picked != null) {
setState(() {
time = picked;
});
}
}

@override

Widget build(BuildContext context) {
mins = timeFormatter(time.minute);
hour = timeFormatter(time.hour);
//mins2 = timeFormatter(time2.minute);

return Scaffold(
appBar: AppBar(
title: Text('Troponin Algorthm')
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: <Widget>[
Expanded(
child: Text('time is $hour:$mins'), //'${_time.hour}:${_time.minute}'
),
RaisedButton(
child: Text('change time'),
onPressed: () {
setState(() {
selectTime(context);
});
}
),
],
),
Text('time1 is: $time'),
],
)
);
}```

最佳答案

而不是 selectTime返回 Future<Null> ,您可以修改它以返回 Future<TimeOfDay> . docs指定 showTimePicker将返回 Future<TimeOfDay>基于用户的选择或null如果用户取消对话框。

Future<TimeOfDay> selectTime(BuildContext context) async {
picked = await showTimePicker(
context: context,
initialTime: time,
);
return picked;
}

并更改您的 RaisedButton像这样:

RaisedButton(
child: Text('change time'),
onPressed: () async {
// We wait for either a Future<TimeOfDay> or a null
var temp = await selectTime(context) ;
if (temp != null) {
setState(() {
time = temp;
});
}
},
),

关于flutter - 多次使用showTimePicker给多个变量赋值时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65116637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com