如何“重试”构建?

兰迪·库德拉

我正在创建一个可恢复并显示html文本的应用程序,该文本在线存储在mysql主机上。如果快照没有任何数据,则应重试查询并重建视图,直到获取数据为止。

这就是我用数据库中的数据创建窗口小部件的方式:

FutureBuilder(
        future: crud_database.getDatos(url),
        builder: (context, snapshot){
          if(snapshot.hasError) print(snapshot.error);

          if( snapshot.hasData){
            return WebView(
              initialUrl: UriData.fromString(snapshot.data[0]["webhtml"], mimeType: "text/html").toString() ,
              onWebViewCreated: (WebViewController webViewController){
                _controller.complete(webViewController);
              },
            );
          }else{
            return Center(
              child: CircularProgressIndicator(),
            );
          }


        },
      )
帕勃罗·巴雷拉(Pablo Barrera)

您可以使用StreamBuilder代替FutureBuilder,并创建一个处理重试并使用Stream来通知UI的方法,如下所示:

  final _streamController = StreamController<YourData>();

  @override
  void initState() {
    super.initState();
    _fetchData();
  }

  Future _fetchData() async {
    YourData data = await crud_database.getDatos(url);
    if (data == null) {
      _streamController.sink.addError("No data, trying again");
      return await _fetchData();
    }
    _streamController.sink.add(data);
  }

  @override
  void dispose() {
    _streamController.close();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    body: StreamBuilder(
      stream: _streamController.stream,
      builder: (context, snapshot) {
        ...
      }
    )
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何跟踪芹菜重试

来自分类Dev

如何重试NUnit TestCase?

来自分类Dev

抓到后如何重试?

来自分类Dev

如何重试错误声明?

来自分类Dev

如何使重试函数尾部递归?

来自分类Dev

如何避免 PromptChoice 重试消息

来自分类Dev

如何阻止 Firestore 事务重试

来自分类Dev

如何限制重试时计数

来自分类Dev

如何重试被中止的 Spanner 提交?

来自分类Dev

Python:发生超时时如何重试

来自分类Dev

如何告诉VBA代码重试特定错误?

来自分类Dev

如何限制Spark作业失败的重试次数?

来自分类Dev

如何让Maven自动重试(简历从失败的模块)?

来自分类Dev

如何识别重试的谷歌云功能?

来自分类Dev

在得到结果之前,如何永久重试IO?

来自分类Dev

如何更新ASPNetCoreRateLimit lib的重试后值?

来自分类Dev

如何重试直到异步成功或超时?

来自分类Dev

如何重试丢失的连接以进行可靠的传输?

来自分类Dev

如何在超时时重试HTTP请求?

来自分类Dev

如何根据其输出重试Observable

来自分类Dev

Spark-如何停止重试并忽略异常

来自分类Dev

如何检查延迟的作业是否真的在重试

来自分类Dev

如何在Promise中编写“重试”?

来自分类Dev

如何仅重试内部可观察的错误?

来自分类Dev

Sidekiq 重试:如何刷新工人/代码?

来自分类Dev

这段用于增量重试的代码如何工作?

来自分类Dev

如何在 Scrapy 中重试 IndexError

来自分类Dev

有 npm 模块:如何重试 POST 请求?

来自分类Dev

如何让用户在输入错误后重试