我的未来未使用FutureBuilder执行

问题描述 投票:0回答:1

我正在尝试使用FutureBuilder,但我正在解决一个问题,我的未来被称为但未执行。而且我不明白为什么。有人知道为什么吗?

这是我的代码:


class TesPage extends StatefulWidget {
  @override
  _TesPageState createState() => _TesPageState();
}

class _TesPageState extends State<TesPage> {
  Future<String> future;
  Future<String> futureFunction() async {
    try {
      await text(); 
      return "Test"; // this is never called
    } catch (e) {
      return e.toString();
    }
  }

  @override
  @mustCallSuper
  void initState() {
    future = futureFunction();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: new FutureBuilder<String>(
        future: future,
        builder: (BuildContext context, snapshot) {
          // returning a widget based on the future
        },
      ),
    );
  }
}

谢谢!

更新修复我的代码示例

flutter dart
1个回答
0
投票

您没有正确等待Future解决。我建议您通过以下方式:

class TesPage extends StatefulWidget {
  @override
  _TesPageState createState() => _TesPageState();
}

class _TesPageState extends State<TesPage> {
//Future<String> future;
  Future<String> futureFunction() async {
    try {
      await text(); 
      return "Test"; // this is never called
    } catch (e) {
      return e.toString();
    }
  }

  //@override
  //@mustCallSuper
  //void initState() {
  //  future = futureFunction();
  //  super.initState();
  //}

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: new FutureBuilder<String>(
        future: futureFunction(),
        builder: (BuildContext context, snapshot) {
            // returning a widget based on the future 
        },
      ),
    );
  }
}

我已经评论了未使用的语句和变量这样FutureBuilder将调用futureFunction并等待其结果。

请注意snapshot可能处于的状态,请检查this以获取完整的信息。

通常,您仅可以检查是否为snapshot.hasData,但是该类为您提供了有关async计算状态的更多信息(在这种情况下,也称为futureFunction

© www.soinside.com 2019 - 2024. All rights reserved.