Как я могу получить данные только один раз при использовании FutureBuilder, чтобы во время выборки отображался индикатор загрузки?
Проблема в том, что каждый раз, когда пользователь открывает экран, он повторно выбирает данные, даже если я установил будущее в initState ().
Я хочу получить данные только при первом открытии экрана пользователем, тогда я буду использовать сохраненные полученные данные.
мне просто использовать виджет с отслеживанием состояния с переменной загрузки и установить его в setState ()?
Я использую пакет провайдера
Future<void> fetchData() async {
try {
final response =
await http.get(url, headers: {'Authorization': 'Bearer $_token'});......
и мой виджет экрана:
class _MyScreenState extends State<MyScreen> {
Future<void> fetchData;
@override
void initState() {
fetchData =
Provider.of<Data>(context, listen: false).fetchData();
super.initState();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: fetchData,
builder: (ctx, snapshot) =>
snapshot.connectionState == ConnectionState.done
? Consumer<Data>(
builder: (context, data, child) => Text(data.fetchedData)): Center(
child: CircularProgressIndicator(),
),
);
}
}