我正试图在我的Streambuilder小组件中添加拉动刷新......以下是我的部分代码,到目前为止我已经尝试过了。
@override
Widget build(BuildContext context) {
return RefreshIndicator(
key: _refreshIndicatorKey,
onRefresh: _handleRefresh,
child: StreamBuilder<DataModel>(
stream: dataBloc.subject.stream,
builder: (context, AsyncSnapshot<DataModel> snapshot) {
if (snapshot.hasData) {
return passData(snapshot.data);
} else if (snapshot.hasError) {
return .....
} else {
return ......
}
}),
);
}
Future<void> _handleRefresh() async {
try {
bool trustSelfSigned = true;
HttpClient httpClient = new HttpClient()
..badCertificateCallback =
((X509Certificate cert, String host, int port) => trustSelfSigned);
IOClient http = new IOClient(httpClient);
final response = await http.post('...',
headers: {
HttpHeaders.contentTypeHeader: 'application/json',
},
body: json.encode({...}));
Map<String, dynamic> responseJson = json.decode(response.body);
return;
} catch (ex) {
print(ex.message);
}
}
但每当我试图向下滑动时......我看不到刷新指标的重载图标......是否有什么东西我应该添加更多?我也添加了这个代码
final GlobalKey<RefreshIndicatorState> _refreshIndicatorKey =
GlobalKey<RefreshIndicatorState>();
是的,你将需要一个可滚动的子控件。在RefreshIndicator后面放一个SingleChildScrollView,这样就可以了。
过去我在返回构建器的ListView中分配了一个配置错误的ScrollController,就遇到了这个问题。一旦我删除了ScrollController,循环刷新指示器就显示出来了,并且调用了onRefresh。
我没有使用SingleChildScrollView。