如何在flutter流构建器外添加刷新指示器?

问题描述 投票:0回答:2

我正试图在我的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>();
flutter refresh stream-builder
2个回答
0
投票

是的,你将需要一个可滚动的子控件。在RefreshIndicator后面放一个SingleChildScrollView,这样就可以了。


0
投票

过去我在返回构建器的ListView中分配了一个配置错误的ScrollController,就遇到了这个问题。一旦我删除了ScrollController,循环刷新指示器就显示出来了,并且调用了onRefresh。

我没有使用SingleChildScrollView。

© www.soinside.com 2019 - 2024. All rights reserved.