小编h8m*_*oss的帖子

参数类型“Null Function(DataSnapshot)”将分配给参数类型“Future Or <dynamic> Function(DataBaseEvent)”

我有这个函数给我一个错误。

getCurrentOnLineUserInfo函数正在尝试从当前登录用户的 Firebase 数据库中获取读取数据。

参数类型“Null Function(DataSnapshot)”无法分配给类型“Future Or Function(DataBaseEvent)”的参数

我正在遵循一年前的教程,所以问题可能是代码太旧了。我可能需要新的语法或其他东西。

static void getCurrentOnLineUserInfo() async {
    firebaseUser = await FirebaseAuth.instance.currentUser;
    String userId = firebaseUser!.uid;
    DatabaseReference reference =
        FirebaseDatabase.instance.ref().child("user").child(userId);

    print("getCurrentOnLineUser info executed!");

    print('${firebaseUser!.email}${firebaseUser!.displayName}');
    
    // errors below this

    reference.once().then((DataSnapshot dataSnapshot) {
      if (dataSnapShot!.value != null) {
        userCurrentInfo = Users.fromSnapshot(dataSnapshot);
      }
    });

  }
}
Run Code Online (Sandbox Code Playgroud)

这是我正在分配数据的类。这个类没有给出错误

class Users {
  String? id;
  String? email;
  String? phone;
  String? name;

  Users({this.id, this.email, this.phone, this.name});

  Users.fromSnapshot(DataSnapshot dataSnapshot) {
    id = dataSnapshot.key!;

    var data = dataSnapshot.value as Map?;

    if …
Run Code Online (Sandbox Code Playgroud)

firebase firebase-realtime-database flutter

2
推荐指数
1
解决办法
4156
查看次数

Flutter 错误:在此 BlocBuilder<StateStreamable<Object?> 上方找不到正确的 Provider<StateStreamable<Object?>>

我正在尝试实现一个用于在页面之间进行导航的 Cubit。我的第一次尝试是在我的背景屏幕上实现它,但在尝试执行此操作时出现此错误:

“错误:在此 BlocBuilder<StateStreamable<Object?>, Object?> Widget 上方找不到正确的 Provider<StateStreamable<Object?>>”

我不明白为什么它找不到正确的上下文,因为我的 BlocBuilder 位于小部件树中的 BlocProvider 之上......

这是代码:

import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flexmes_mobile_app/buisness_logic/cubit/internet_cubit.dart';
import 'package:flexmes_mobile_app/buisness_logic/utility/app_bloc_observer.dart';
import 'package:flexmes_mobile_app/config/themes.dart';
import 'package:flexmes_mobile_app/ui/screens/auth_screen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:responsive_sizer/responsive_sizer.dart';
import 'buisness_logic/cubit/navigation_cubit.dart';
import 'config/app_router.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Firebase.initializeApp();
  BlocOverrides.runZoned(
        () => runApp(MyApp()),
    blocObserver: AppBlocObserver(),
  );
}

class MyApp extends StatelessWidget {
  final AppRouter _appRouter = AppRouter();

  MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MediaQuery(
      data: const MediaQueryData(),
      child: ResponsiveSizer(
          builder: (context, orientation, deviceType) …
Run Code Online (Sandbox Code Playgroud)

builder flutter flutter-bloc cubit

0
推荐指数
1
解决办法
2826
查看次数