当我按下一个按钮时我试图保存数据列表,然后我试图将数据访问到其他屏幕。但是它会引发错误
我遇到错误
E/flutter (17394): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: type 'List<String>' is not a subtype of type 'FutureOr<String>'
E/flutter (17394): #0 SharedPrefrence.getCartItem (package:boon/Utils/SharedPrefrence.dart:26:5)
E/flutter (17394): <asynchronous suspension>
具有保存列表和检索列表的Sharedprefrence类
Future<bool> setCartItem(List<String> list) async
{
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setStringList("cartkey", list);
}
Future<String> getCartItem() async
{
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getStringList("cartkey") ?? '';
}
在按钮中按下
SharedPrefrence().setCartItem(cartdatalist);
虚假数据
List<String> cartdatalist=['TWA Cap','₹575','M','Red'];
其他页面中的InitState可以访问保存的数据
void initState() {
// TODO: implement initState
super.initState();
Future listdata = SharedPrefrence().getCartItem();
listdata.then((data) async {
listdata = data;
print(listdata);
});
}
答案 0 :(得分:1)
Future<List<String>> getCartItem() async
{
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getStringList("cartkey") ?? '';
}
其他页面
void initState() {
super.initState();
SharedPrefrence().getCartItem().
then((data) async {
listdata = data;
print(listdata);
});
}
答案 1 :(得分:0)
您需要将getCartItem()
函数的返回类型更改为Future<List<String>>
。当List
为prefs.getStringList("cartkey")
时,还需要返回一个空的null
。
Future<List<String>> getCartItem() async
{
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getStringList("cartkey") ?? [];
}
然后像这样访问它。
void initState() {
super.initState();
List<String> listdata;
SharedPrefrence().getCartItem().then((data) {
listdata = data;
print(listdata);
});
}