标签: future

Flutter 中数据加载完成后如何渲染我的小部件

我想要做什么 登录后,显示具有列表视图的主屏幕。此列表视图显示来自 API 的数据。因此,加载需要一点时间。我想在加载完成后渲染我的主屏幕,我的列表视图充满了数据。

我已经做了什么, 我有一个 api 帮助器类,可以执行 api 工作。它有一个静态方法,用于获取列表视图的数据并返回列表。这是我的 getFixtureData 方法。

 static Future<List<Fixtures>> getFixtureData() async {
    Map<String, String> queryParameters = {
      'league': '78',
      'next': '20',
    };

    http.Response response = await http.get(
      getUrl('fixtures', queryParameters),
      headers: requestHeaders,
    );

    print(response.body);

    if (response.statusCode == 200) {
      String data = response.body;
      List<dynamic> result = jsonDecode(data)['response'];

      for (int i = 0; i < result.length; i++) {
        Fixtures fixture = Fixtures();

        fixture.leagueID = jsonDecode(data)['response'][i]['league']['id'];
        fixture.country = jsonDecode(data)['response'][i]['league']['country'];
        fixture.leagueName = jsonDecode(data)['response'][i]['league']['name'];
        fixture.fixtureID = jsonDecode(data)['response'][i]['fixture']['id'];

        //get Odds to …
Run Code Online (Sandbox Code Playgroud)

asynchronous future dart flutter

0
推荐指数
1
解决办法
6581
查看次数

如何在 GridView 上正确实现复选框

我有用于选择和取消选择照片的复选框。每次点击都有一个可见的加载屏幕。

可见的加载屏幕

_mediaList有照片资产。mediaModel有必要的方法来分别添加和删除选定和取消选定照片的路径。

 Widget build(BuildContext context) {
    super.build(context);
    return GridView.builder(
      itemCount: _mediaList.length,
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 3, mainAxisSpacing: 4.0, crossAxisSpacing: 4.0),
      itemBuilder: (BuildContext context, int index) {
        final saved = mediaModel.getMedia().contains(
            _mediaList[index].relativePath + '/' + _mediaList[index].title);
        return FutureBuilder(
            future: _mediaList[index].thumbDataWithSize(200, 200),
            builder: (BuildContext context, snapshot) => snapshot.hasData
                ? GridTile(
                    header: saved
                        ? Icon(Icons.check_circle, color: Colors.white,)
                        : Icon(Icons.check_circle_outline, color: Colors.white,),
                    child: GestureDetector(
                        child: Image.memory(
                          snapshot.data,
                          fit: BoxFit.cover,
                        ),
                        onTap: () => setState(() => saved
                            ? mediaModel.removeMedia(
                                _mediaList[index].relativePath +
                                    '/' + …
Run Code Online (Sandbox Code Playgroud)

gridview future dart flutter flutter-layout

0
推荐指数
1
解决办法
2506
查看次数

Dart 套接字监听不会等到完成

我想在一个函数中执行这些操作:
1-连接套接字2-发送查询3-监听数据4-返回数据

但是当我尝试套接字时。即使我将await 放在listen 函数上,它也不会等待。它说这不是未来,而是一个 Stream 对象,但我对 Streams 不了解,所以我被困在这里。我怎样才能按照我说的去做呢?

static sendQuery({required String query,args, dimension}) async {
if(args != null)
  args.forEach((element) => query = query.replaceFirst("?", element));

String ip = shared.getData("remote_ip");
int port = shared.getData("remote_port");
String data =  "";
await Socket.connect(ip, port,timeout: Duration(seconds: 5)).then((soket) {
  soket.write(query);
  soket.listen((Uint8List buffer) async {
    String _buffer = String.fromCharCodes(buffer);
    data += _buffer;
  },
  onDone: () {});
});

print("Data has returned. Length of data: ${data.length}");
return data;}
Run Code Online (Sandbox Code Playgroud)

sockets future stream dart flutter

0
推荐指数
1
解决办法
2152
查看次数

是否有一种 FuturesOrdered 替代方案可以一一产生结果?

在 Rust 中,我有一堆想要并行执行的异步函数。处理这些函数结果的顺序很重要。我还想在这些函数可用时检索它们的结果。

\n

让我不好解释一下。

\n

以下是 的描述FuturesOrdered

\n
\n

这个“组合器”类似于 FuturesUnordered,但它在 future 集合之上强加了一个顺序。虽然集合中的 future 将并行完成\n,但结果将仅按其原始 future 添加到队列的顺序返回。

\n
\n

到目前为止,一切都很好。现在看这个例子:

\n
let mut ft = FuturesOrdered::new();\nft.push(wait_n(1)); // wait_n sleeps\nft.push(wait_n(2)); // for the given\nft.push(wait_n(4)); // number of secs\nft.push(wait_n(3));\nft.push(wait_n(5));\nlet r = ft.collect::<Vec<u64>>().await;\n
Run Code Online (Sandbox Code Playgroud)\n

由于FuturesOrdered\xc2\xa0await 直到所有future 都完成;这就是我得到的:

\n
|--|        ++\n|----|      ++\n|--------|  ++\n|------|    ++\n|----------|++\n            ++-> all results available here \n
Run Code Online (Sandbox Code Playgroud)\n

这就是我要的:

\n
|--|++\n|----|++\n|--------|++\n|------|    ++\n|----------|  ++\n               \n
Run Code Online (Sandbox Code Playgroud)\n

换句话说; 我要等待下一个未来;随着剩余的期货不断地完成。另请注意,即使任务#4 在任务#3 之前完成;由于最初的订单,它是在#3 之后处理的。

\n

我怎样才能获得像这样同时执行的期货流?我希望有这样的事情: …

future stream rust async-await rust-tokio

0
推荐指数
1
解决办法
1557
查看次数

关于 Rust 中的 Boxed Future 的编译器错误消息有点令人困惑

我似乎不明白这里的编译器错误消息。对于以下代码片段

use std::pin::Pin;
use std::future::Future;

fn give_future<'a>(x : &'a i32) -> Pin<impl Future<Output=&'a i32> + 'a> {
    Box::pin(async move { x })
}
Run Code Online (Sandbox Code Playgroud)

它说以下内容

error[E0277]: `[async block@src/lib.rs]` cannot be unpinned
 --> src/lib.rs:7:47
  |
  | fn give_future<'a>(x : &'a i32) -> Pin<impl Future<Output=&'a i32> + 'a> {
  |                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Unpin` is not implemented for `[async block@src/lib.rs]`
  |
  = note: consider using the `pin!` macro
          consider using `Box::pin` if you need to access the pinned value outside of the current …
Run Code Online (Sandbox Code Playgroud)

future rust

0
推荐指数
1
解决办法
80
查看次数

OpenMP是否支持异步操作?

我已经使用Javascript了一段时间,我喜欢它的异步操作,使用回调或承诺和期货.现在我需要使用OpenMP,但未能找到对这些功能的任何支持.

OpenMP是否支持回调和/或期货?

c future openmp promise async-await

-1
推荐指数
1
解决办法
439
查看次数

调用 std::packaged_task::get_future() 时可能出现的竞争条件

在这个文档中看到,有一个演示片段:

std::packaged_task<int()> task([]{ return 7; }); // wrap the function
std::future<int> f1 = task.get_future();  // get a future
std::thread t(std::move(task)); // launch on a thread
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我像这样重写代码片段,是否存在任何潜在的问题(竞争条件):

std::packaged_task<int()> task([]{ return 7; }); // wrap the function
std::thread t(std::move(task)); // firstly launch on a thread, and then gets a future
std::future<int> f1 = task.get_future();  // get a future
Run Code Online (Sandbox Code Playgroud)

更新1 :我理解 Nicol Bolas 的答案,如果我像这样重写代码片段,是否存在任何潜在的问题(竞争条件):

std::packaged_task<int()> task([]{ return 7;});
thread_callablefunc_queue.push_back(task);  //task may be popped and run by another thread at once, …
Run Code Online (Sandbox Code Playgroud)

c++ future race-condition c++11

-1
推荐指数
1
解决办法
85
查看次数