【问题标题】:Error Im getting is - Null Function(DataSnapshot) can;t be assigned to the parameter type 'FutureOr<dynamic> Function(DatabaseEvent)'我得到的错误是 - Null Function(DataSnapshot) can;t be assigned to the parameter type 'FutureOr<dynamic> Function(DatabaseEvent)'
【发布时间】:2022-01-23 04:23:44
【问题描述】:

我得到的错误是 - Null Function(DataSnapshot) can;t be assigned to the parameter type 'FutureOr Function(DatabaseEvent)' 我试图从 firebase 检索数据,但没有发生。

    import 'package:flutter/material.dart';
    import 'package:firebase_database/firebase_database.dart';
    import 'package:firebase_core/firebase_core.dart';
    import 'package:firebase_auth/firebase_auth.dart';
    
    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
    
      final textcontroller = TextEditingController();
      final databaseRef = FirebaseDatabase.instance.reference();
      final Future<FirebaseApp> _future = Firebase.initializeApp();
      //FirebaseAuth auth = FirebaseAuth.instance;
    
    
    
    
      void addData(String data) {
        databaseRef.child("Valve").set({Flow : 'ON'});
      }
      void addData2(String data) {
        databaseRef.child("Valve").set({Flow : 'OFF'});
      }
    
    
    
      void ReadData_once() {
        databaseRef.child("FirebaseIOT").child("LatestReading").once().then((DataSnapshot Snapshot) {
          print();
    
        });//this is the error
      }
    
      void printFirebase(){
        databaseRef.once().then((DataSnapshotsnapshot) {
    
          print('Data : ');
        });
      }//this is where error is coming

【问题讨论】:

  • 是的,您可以编辑您的问题。请删除此问题或您写了 2 小时的问题。

标签: firebase flutter firebase-realtime-database


【解决方案1】:

您应该将 DatabaseEvent 放在 then 中,而不是 DataSnapshot

所以这部分

databaseRef.child("FirebaseIOT").child("LatestReading").once().then((DataSnapshot Snapshot) {print('test')}

应该是

databaseRef.child("FirebaseIOT").child("LatestReading").once().then((DatabaseEvent event) {print('test')}

【讨论】:

    【解决方案2】:

    我不是 dart/flutter 程序员,但我知道您必须先初始化应用程序,然后才能从 firebase 库中使用任何其他模块。

    所以尝试切换这行:

    final Future<FirebaseApp> _future = Firebase.initializeApp();
    final databaseRef = FirebaseDatabase.instance.reference();
    

    我很确定 initializeApp() 需要 firebase 配置对象,所以你应该像这样初始化:firebase.initializeApp(firebaseConfig)

    我不知道这是什么:Future&lt;FirebaseApp&gt; 为什么你强制让初始化结果成为这个未来的通用对象?

    【讨论】:

      猜你喜欢
      • 2022-12-26
      • 2022-12-01
      • 2022-08-16
      • 2023-01-27
      • 1970-01-01
      • 2021-10-06
      • 2022-12-01
      • 2013-10-30
      • 2022-12-02
      相关资源
      最近更新 更多