Dart 颤振未来返回空值

Dart 颤振未来返回空值,dart,flutter,Dart,Flutter,我已经看过了: 遵循了解决方案,但在我的情况下不起作用 今天下午我会得到一些启发 Future<String> loadInterest() async { print('Going to load interests'); final whenDone = new Completer(); SharedPreferences prefs = await SharedPreferences.getInstance(); final token

我已经看过了:

遵循了解决方案,但在我的情况下不起作用

今天下午我会得到一些启发

  Future<String> loadInterest() async {
    print('Going to load interests');

    final whenDone = new Completer();

    SharedPreferences prefs = await SharedPreferences.getInstance();

    final token = await prefs.getString('token');

    print('The token ${token}');

    await this.api.interests(token).then((res) {
      // print('The response: ${res['interests']}'); <-- this prints response alright. Data is coming.
      whenDone.complete(res['interests']);
    });

    return whenDone.future;
  }
其中
兴趣芯片(…)
是:

  InterestChips(items) {
    print('Interest Chips ${items}');
    List chipList;

    for (Object item in items) {
      chipList.add(Text('${item}'));
    }

    return chipList;
  }
但是,我总是得到
null
作为快照,这意味着
未来的
loadInterest()
没有返回任何内容


如果我正确地理解了这个答案,那么我的回答是这样的:

你不需要为这个使用
补全符。因为您的方法已经是
异步的
,所以您应该只对第一个代码块执行以下操作:

Future<String> loadInterest() async {
  print('Going to load interests');

  final whenDone = new Completer();

  SharedPreferences prefs = await SharedPreferences.getInstance();

  final token = await prefs.getString('token');

  print('The token ${token}');

  final res = await this.api.interests(token).then((res) {
  // print('The response: ${res['interests']}'); <-- this prints response alright. Data is coming.
  return res['interests']);
}
Future loadInterest()异步{
打印(“准备加载利息”);
最终whenDone=新的完成符();
SharedReferences prefs=等待SharedReferences.getInstance();
final token=wait prefs.getString('token');
打印('thetoken${token}');
final res=等待这个.api.interests(令牌)。然后((res){

//print('response:${res['interests']}');是否检查快照。hasError?发送发送HTTP请求的链接。
Future<String> loadInterest() async {
  print('Going to load interests');

  final whenDone = new Completer();

  SharedPreferences prefs = await SharedPreferences.getInstance();

  final token = await prefs.getString('token');

  print('The token ${token}');

  final res = await this.api.interests(token).then((res) {
  // print('The response: ${res['interests']}'); <-- this prints response alright. Data is coming.
  return res['interests']);
}