Я построил следующий небольшой тестовый код, чтобы продемонстрировать проблему, с которой я сталкиваюсь во Flutter:
![enter image description here](https://i.stack.imgur.com/EKggQ.gif)
Из рисунка GIF видно, что приложение обновляется, а текст фрагментов обновляется с «Hello Refresh» до «Bye Refresh», однако значок загрузки CupertinoRefreshControl не исчезает после изменения текста.
Я ожидал, что значок загрузки исчезнет при загрузке новых данных в Sliver:
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'dart:async';
import 'dart:ui';
class _RefreshTestState extends State<RefreshTest> {
bool flag = false;
@override
Widget build(BuildContext context) {
// TODO: implement build
// TODO: implement build
return new CupertinoPageScaffold(
//i will need to convert this to a sliver list to make this work properly.
backgroundColor: const Color(0xFFEFEFF4),
child: new CustomScrollView(slivers: <Widget>[
new CupertinoSliverNavigationBar(largeTitle: new Text('TESTING'),),
new CupertinoRefreshControl(onRefresh: () {
return new Future<void>.delayed(const Duration(seconds: 1))
..then((_) => setState(() {
if (flag) {
flag = false;
} else {
flag = true;
}
}));
}),
new SliverSafeArea(
top: false,
sliver: new SliverList(
delegate: new SliverChildBuilderDelegate(
(BuildContext context, int index) {
return flag? new Text("Hello Refresh.") : new Text("Bye refresh");
},
childCount: 2,
),
),
)
]),
);
}
}
class RefreshTest extends StatefulWidget {
@override
Widget build(BuildContext context) {
}
@override
_RefreshTestState createState() => new _RefreshTestState();
}
Я вижу, что для этой проблемы также была запущена тема github, но решение пока не опубликовано: https://github.com/flutter/flutter/issues/17474