首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于互联网连接的StreamBuilder重建

基于互联网连接的StreamBuilder重建
EN

Stack Overflow用户
提问于 2020-01-05 15:41:53
回答 1查看 1.1K关注 0票数 0

在我的应用程序中,StreamBuilder用于防火墙和连接提供商。

背景:

我打开了互联网和流生成器加载从火基地的5个列表的图像。现在,我关闭了互联网,滚动起来,图像没有加载和显示占位符图像的下一个列表。我认为这是正确的,因为流构建器只加载到可见屏幕。由于来自firebase的图像不可用,占位符被认为是一个ImageStream。

查询:

当我切换到互联网上时,我想用图片改变/更新占位符。现在,来自firebase的快照是相同的,占位符被认为是imagestream,我没有在列表中看到来自firebase的图像。

以互联网连接为提供者,我可以构建流构建器,但是快照是相同的,我不知道如何更新。

EN

回答 1

Stack Overflow用户

发布于 2020-01-05 19:33:35

这是你提出的问题的一个可能的解决办法。它对列表使用侦听器而不是StreamBuilder,并在通过使用连接包侦听连接更改来恢复internet连接时重新侦听Stream。由于您没有提供任何代码,下面是一个示例:

进口

代码语言:javascript
复制
import 'dart:async';
import 'package:connectivity/connectivity.dart';

声明和方法

代码语言:javascript
复制
StreamSubscription subscription;
List<String> myStrings = [];

@override
void initState() {
  subscription = new Connectivity().onConnectivityChanged.listen((
    ConnectivityResult result) {
      handleConnectivityChange(result);
    }
  );
  listenToStringList();
  super.initState();
}

@override
void dispose() {
  subscription.cancel();
  myStreamFromStateOrParentWidget.cancel();
  super.dispose();
}

void listenToStringList(){
  myStreamFromStateOrParentWidget.listen((snapshot){
    setState(() {
      myStrings = snapshot;
    });
  });
}

void handleConnectivityChange(connectionState){
  debugPrint('connectionState: $connectionState');
  switch(connectionState) {
    case ConnectivityResult.none:
      debugPrint('no connection');
      break;

    case ConnectivityResult.wifi:
      listenToStringList();
      break;

    case ConnectivityResult.mobile:
      listenToStringList();
      break;

    default:
      debugPrint('default');
      break;
  }
}

小部件

代码语言:javascript
复制
@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Center(
      child: ListView.builder(
        itemCount: myStrings.length,
        itemBuilder: (context, index){
          return Text(myStrings[index]);
        }
      ),
    )
  );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59601452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档