Flutter 我得到了这个方法';[]和#x27;在streambuilder[Flatter]中的我的应用程序中出现空错误时被调用

Flutter 我得到了这个方法';[]和#x27;在streambuilder[Flatter]中的我的应用程序中出现空错误时被调用,flutter,Flutter,编辑:-事实上,我通过改变参数解决了这个问题!snapshot.data.documents.isEmpty to snapshot.data.data()!=无效的 我发现,当我试图用新文档将我的项目迁移到FlatterFire时,有些东西并没有显示错误,但它们也不起作用。但在阅读了文档之后,我能够解决所有问题 ════════ widgets库捕获到异常═══════════════════════════════════ 在生成StreamBuilder时引发了以下NoSuchMethod

编辑:-事实上,我通过改变参数解决了这个问题!snapshot.data.documents.isEmpty to snapshot.data.data()!=无效的 我发现,当我试图用新文档将我的项目迁移到FlatterFire时,有些东西并没有显示错误,但它们也不起作用。但在阅读了文档之后,我能够解决所有问题

════════ widgets库捕获到异常═══════════════════════════════════ 在生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:_StreamBuilderBaseState#8fcb4): 对null调用了方法“[]”。 收件人:空 已尝试呼叫:

它在调试控制台中显示了该文件的错误,并且它曾经工作过,我没有更改任何内容,但它在streambuilder中显示了nosuchmethoderror

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:skype_clone/models/call.dart';
import 'package:skype_clone/provider/user_provider.dart';
import 'package:skype_clone/resources/call_methods.dart';
import 'package:skype_clone/screens/callscreens/pickup/pickup_screen.dart';

class PickupLayout extends StatelessWidget {
  final Widget scaffold;
  final CallMethods callMethods = CallMethods();

  PickupLayout({
    @required this.scaffold,
  });

  @override
  Widget build(BuildContext context) {
    final UserProvider userProvider = Provider.of<UserProvider>(context);

    return (userProvider != null && userProvider.getUser != null)
        ? StreamBuilder<DocumentSnapshot>(
            stream: callMethods.callStream(uid: userProvider.getUser.uid),
            builder: (context, snapshot) {
              if (snapshot.hasData && snapshot.data.data != null) {
                Call call = Call.fromMap(snapshot.data.data());

                if (!call.hasDialled) {
                  return PickupScreen(call: call);
                }
              }
              return scaffold;
            },
          )
        : Scaffold(
            body: Center(
              child: CircularProgressIndicator(),
            ),
          );
  }
}
import'包:cloud_firestore/cloud_firestore.dart';
进口“包装:颤振/材料.省道”;
导入“包:provider/provider.dart”;
导入“package:skype_clone/models/call.dart”;
导入“包:skype_克隆/provider/user_provider.dart”;
导入“package:skype_clone/resources/call_methods.dart”;
导入“软件包:skype_clone/screens/callscreens/pickup/picku_screen.dart”;
类PickupLayout扩展了无状态小部件{
最终支架;
final CallMethods CallMethods=CallMethods();
拾取布局({
@需要这个脚手架,
});
@凌驾
小部件构建(构建上下文){
最终用户提供者UserProvider=Provider.of(上下文);
返回(userProvider!=null&&userProvider.getUser!=null)
?StreamBuilder(
流:callMethods.callStream(uid:userProvider.getUser.uid),
生成器:(上下文,快照){
if(snapshot.hasData&&snapshot.data.data!=null){
Call Call=Call.fromMap(snapshot.data.data());
如果(!call.hasDialled){
返回拾取屏幕(呼叫:呼叫);
}
}
返回脚手架;
},
)
:脚手架(
正文:中(
子对象:CircularProgressIndicator(),
),
);
}
}
尝试以下代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:skype_clone/models/call.dart';
import 'package:skype_clone/provider/user_provider.dart';
import 'package:skype_clone/resources/call_methods.dart';
import 'package:skype_clone/screens/callscreens/pickup/pickup_screen.dart';

class PickupLayout extends StatelessWidget {
  final Widget scaffold;
  final CallMethods callMethods = CallMethods();

  PickupLayout({
    @required this.scaffold,
  });

  @override
  Widget build(BuildContext context) {
    final UserProvider userProvider = Provider.of<UserProvider>(context);

    return (userProvider != null && userProvider.getUser != null)
        ? StreamBuilder<DocumentSnapshot>(
            stream: callMethods.callStream(uid: userProvider.getUser.uid),
            builder: (context, snapshot) {
              if (snapshot.hasData && !snapshot.data.documents.isEmpty) {
                Call call = Call.fromMap(snapshot.data.data());

                if (!call.hasDialled) {
                  return PickupScreen(call: call);
                }
              }
              return scaffold;
            },
          )
        : Scaffold(
            body: Center(
              child: CircularProgressIndicator(),
            ),
          );
  }
}
import'包:cloud_firestore/cloud_firestore.dart';
进口“包装:颤振/材料.省道”;
导入“包:provider/provider.dart”;
导入“package:skype_clone/models/call.dart”;
导入“包:skype_克隆/provider/user_provider.dart”;
导入“package:skype_clone/resources/call_methods.dart”;
导入“软件包:skype_clone/screens/callscreens/pickup/picku_screen.dart”;
类PickupLayout扩展了无状态小部件{
最终支架;
final CallMethods CallMethods=CallMethods();
拾取布局({
@需要这个脚手架,
});
@凌驾
小部件构建(构建上下文){
最终用户提供者UserProvider=Provider.of(上下文);
返回(userProvider!=null&&userProvider.getUser!=null)
?StreamBuilder(
流:callMethods.callStream(uid:userProvider.getUser.uid),
生成器:(上下文,快照){
if(snapshot.hasData&!snapshot.data.documents.isEmpty){
Call Call=Call.fromMap(snapshot.data.data());
如果(!call.hasDialled){
返回拾取屏幕(呼叫:呼叫);
}
}
返回脚手架;
},
)
:脚手架(
正文:中(
子对象:CircularProgressIndicator(),
),
);
}
}

事实上,我通过更改密码解决了这个问题!snapshot.data.documents.isEmpty to snapshot.data.data()!=无效的 我发现,当我试图用新文档将我的项目迁移到FlatterFire时,有些东西并没有显示错误,但它们也不起作用。但在阅读了文档之后,我能够解决所有问题