使用FutureBuilder时如何仅获取一次数据?

时间:2020-01-22 12:12:21

标签: flutter

我有一个获取请求,并将其作为将来传递给FutureBuilder-

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
image:
<img  src="https://alphacardstore.com/wp-content/uploads/2020/01/placeholder.png" class="image">
canvas:
<canvas class="img_canvas">
our browser does not support the HTML5 Canvas, please consider updating or changing your browser for a better experience.
</canvas>

然而,方法gettask()似乎在重复获取事件。我尝试使用https://pub.dev/packages/memoizehttps://api.flutter.dev/flutter/package-async_async/AsyncMemoizer-class.html,但我认为它们已被弃用,因为它说AsyncMemoizer未定义(没有可用的导入选项)。

我也尝试过https://github.com/flutter/flutter/issues/11426#issuecomment-414047398,但我想探索一个类似于备忘录的选项。

有什么方法可以只获取一次数据(类似于备忘录)?

2 个答案:

答案 0 :(得分:2)

使用methods:{ clickHandler(event, yourUrl){ axios.get(yourUrl) .then(function (response){ //do what you need with this response } } } ,然后在StatefulWidget内创建一个Future变量(如_getTaskAsync)。

State分配给gettask()中的该将来变量。

然后使用该变量作为initState的参数(例如FutureBuilder

代码:

future: _getTaskAsync

请参阅document

答案 1 :(得分:0)

import 'dart:async';
import 'package:async/async.dart';

对我有用...