【问题标题】:Cannot get List data from SharedPreferences using FutureBuilder call无法使用 FutureBuilder 调用从 SharedPreferences 获取列表数据
【发布时间】:2021-08-15 04:38:55
【问题描述】:

我的共享首选项中有一个字符串列表,用于存储帐号,然后可用于从 API 进行调用:

List<String> accountList = [];

Future _getListData() async {
SharedPreferences myPrefs = await SharedPreferences.getInstance();
for(var i = 0; i < myPrefs.getStringList('accounts').length; i++){
  accountList.add(myPrefs.getStringList('accounts')[i]);
}
//prints values from shared preferences
print(accountList);
}

Future<List<dynamic>> fetchData() async {
_getListData();
//prints an empty list
print(accountList);
try {
  if (accountList == null) {
    var result = await http.get(apiUrl);
    List<dynamic> accountInfo = (json.decode(result.body));
    return accountInfo;
  } else {
    List<dynamic> accountInfo = [];
    for(var i = 0; i < accountList.length; i++){
      var result =
      await http.get(apiUrl + "/api/Data/GetCustomer?accntnum=" + accountList[i]);
      accountInfo.add(json.decode(result.body));
    }
    return accountInfo;
  }
} catch (e) {
  print(e);
}
}

当在小部件中从我的 FutureBuilder 调用 Future 函数“fetchData()”时,它会返回一个空列表。然而,在“_getListData()”函数的范围内,它使用适当的值打印列表。我怎样才能使“fetchData()”获得预期的列表?

【问题讨论】:

    标签: flutter dart sharedpreferences future flutter-futurebuilder


    【解决方案1】:

    只需在_getListData() 之前添加等待:

    Future<List<dynamic>> fetchData() async {
    await _getListData();
    //prints an empty list
    print(accountList);
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 2021-01-16
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 2012-09-18
      相关资源
      最近更新 更多