Flutter Widget 之 FutureBuilder

511 阅读1分钟

Flutter和Dart本质上是异步的,使用Dart的Futures,你可以管理IO而无需担心线程或死锁

但是,当涉及到Future时,您应该如何构建Widget?

输入FutureBuilder,处理的Future,就是Futures

FutureBuilder(
    future:http.get('http:awesome.data'),
    builder:_myBuilderFunction,
)

FutureBuilder可以让你轻松指导Future的当前状态,并选择在数据加载时显示什么内容和加载完成显示的内容

  1. 首先给一个FutureBuilder一个future

  2. 然后再给一个builder

  3. 确保使用connectionState检查future的态

  4. 再Future loading的时候给一个Widget 

  5. 最好检查一下是否有error,如果有就解决 snapshot.hasError

    FutureBuilder( future:http.get('http:awesome.data'), builder:(context, snaphot) { if (snapshot.connectionState == ConnectionState.done){ if (snapshot.hasError) { return SomethingWentWrong(); } else { return AwesomeData(snapshot.data); } } else { return CircularProgressIndicator(); } }
    )

你也可以使用其他的ConnectionState

ConnectionState.none
ConnectionState.waiting
ConnectionState.active
ConnectionState.done

如果想了解有关FutureBuilder的内容,或者关于Flutter的其他功能,请访问flutter.io

原文翻译自视频:视频地址