获取未来的字符串并在颤动中保存状态
getting future string and saving state in flutter
我正在尝试获取未来的字符串值,并在 flutter 中保存状态。用户选择结束时间,它应该显示在 UI 上直到结束。但是,我收到以下错误:
type 'String' is not a subtype of type 'Future<String>' in type cast
方法:
final Future<SharedPreferences> _prefs =
SharedPreferences.getInstance();
Future<String> _textLine = '' as Future<String>;
Future<String> fastTrue() async {
final SharedPreferences prefs = await _prefs;
String formattedDate = DateFormat('yyyy-MM-dd,
hh:mma').format(endTime);
final textLine = (prefs.getString('formattedDate') ??
Languages.of(context)!.setYourFastTime) as Future<String>;
setState(() {
_textLine = prefs.setString('formattedDate',
Languages.of(context)!.endTimeIs
+'\n$formattedDate').then((bool success) {
return textLine;
});
});
return textLine;
}
在 initState() 中:
@override
void initState() {
super.initState();
_textLine = _prefs.then((SharedPreferences prefs) {
return prefs.getString('formattedDate') ??
Languages.of(context)!.setEndTime +'\n'+DateFormat('yyyy-MM-dd,
hh:mma').format(DateTime.now());
});
然后在我的小部件 build() 中:
Padding(padding: const EdgeInsets.only(top: 170),
child: FutureBuilder<String>(
future: _textLine,
builder: (BuildContext context,
AsyncSnapshot<String> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return const CircularProgressIndicator();
default:
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return Text(
Languages.of(context)!.endTimeIs +
"\n${snapshot.data}"
);
}
}
})),
请帮助我,尝试使用配置单元,但无法保存小部件的状态。谢谢!
此代码抛出错误,因为您尝试将 String
转换为 Future<String>>
,尽管它是 String
.
Future<String> _textLine = '' as Future<String>;
如果你想声明一个带值的Future
,你可以使用value方法。
Future<String> _textLine = Future.value('');
我正在尝试获取未来的字符串值,并在 flutter 中保存状态。用户选择结束时间,它应该显示在 UI 上直到结束。但是,我收到以下错误:
type 'String' is not a subtype of type 'Future<String>' in type cast
方法:
final Future<SharedPreferences> _prefs =
SharedPreferences.getInstance();
Future<String> _textLine = '' as Future<String>;
Future<String> fastTrue() async {
final SharedPreferences prefs = await _prefs;
String formattedDate = DateFormat('yyyy-MM-dd,
hh:mma').format(endTime);
final textLine = (prefs.getString('formattedDate') ??
Languages.of(context)!.setYourFastTime) as Future<String>;
setState(() {
_textLine = prefs.setString('formattedDate',
Languages.of(context)!.endTimeIs
+'\n$formattedDate').then((bool success) {
return textLine;
});
});
return textLine;
}
在 initState() 中:
@override
void initState() {
super.initState();
_textLine = _prefs.then((SharedPreferences prefs) {
return prefs.getString('formattedDate') ??
Languages.of(context)!.setEndTime +'\n'+DateFormat('yyyy-MM-dd,
hh:mma').format(DateTime.now());
});
然后在我的小部件 build() 中:
Padding(padding: const EdgeInsets.only(top: 170),
child: FutureBuilder<String>(
future: _textLine,
builder: (BuildContext context,
AsyncSnapshot<String> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return const CircularProgressIndicator();
default:
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return Text(
Languages.of(context)!.endTimeIs +
"\n${snapshot.data}"
);
}
}
})),
请帮助我,尝试使用配置单元,但无法保存小部件的状态。谢谢!
此代码抛出错误,因为您尝试将 String
转换为 Future<String>>
,尽管它是 String
.
Future<String> _textLine = '' as Future<String>;
如果你想声明一个带值的Future
,你可以使用value方法。
Future<String> _textLine = Future.value('');