微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter - 为 Web 应用程序工作的提供程序,但是当我在 Android 上运行时它会中断吗?

如何解决Flutter - 为 Web 应用程序工作的提供程序,但是当我在 Android 上运行时它会中断吗?

我正在创建一个跨平台的 Flutter 应用程序并开始在 Web 版本上进行开发。我一直在使用 provider 来围绕我的应用传递各种数据,到目前为止它运行良好。

但是,当我在 Android 上运行我的应用程序时,我用来从 Firestore 提取数据的提供程序没有注册任何值。当我在网络上运行时,当我打印值列表的长度时,我得到 2,而在 Android 上,我得到 0。

我很感激这里没有大量信息,但我想知道是否有其他人遇到过同样的问题?如果是这样,你是如何解决的?谢谢。

更新 - 添加代码

以下是我从 firestore 访问流的方法

class OurDatabase {
  final CollectionReference customCollection =
      FirebaseFirestore.instance.collection('myCollection');

  Stream<List<CustomClass>> get customitems {
    return customCollection.snapshots().map(
          (QuerySnapshot querySnapshot) => querySnapshot.docs
              .map(
                (document) => CustomClass.fromFirestore(document),)
              .toList(),);
  }

这是我的 main.dart:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(
    MultiProvider(
      providers: [
        StreamProvider<List<CustomClass>>.value(
          value: OurDatabase().customitems,initialData: <CustomClass>[],),],child: MaterialApp(theme: OurTheme().buildTheme(),home: OurHomePage()),);
}

然后我在此处访问自定义列表:

    class OurHeadlineList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final List<CustomClass> items =
        Provider.of<List<CustomClass>>(context);
    print(items .length);
    return Container();
        }
  }

我已经将提供程序换成了流构建器并且有效 - 我猜问题出在提供程序上?

就像我之前提到的,当我在 Chrome 上运行时,提供程序运行良好。但是当我在 Android 模拟器上运行时,它不会获取任何值。我能够通过两个平台登录 firebase,这让我更加困惑。想法?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。