You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加Firestore数据获取后Flutter运行报错的问题排查

问题:Flutter集成Firestore后编译报错(找不到FallThroughError和FirebaseAppPlatform.verifyExtends)

在Flutter应用中添加Firestore数据获取逻辑后,执行flutter run命令时编译失败,报错提示找不到FallThroughError方法与FirebaseAppPlatform.verifyExtends成员。已尝试清理重建、升级Flutter、调整包版本等操作,问题仍未解决。

报错日志

Launching lib/main.dart on 2109119DG in debug mode...
../../../../.pub-cache/hosted/pub.dev/cloud_firestore_platform_interface-5.7.7/lib/src/platform_interface/utils/load_bundle_task_state.dart:13:13: Error: Method not found: 'FallThroughError'.
      throw FallThroughError();
            ^^^^^^^^^^^^^^^^
../../../../.pub-cache/hosted/pub.dev/firebase_core-1.24.0/lib/src/firebase_app.dart:18:25: Error: Member not found: 'FirebaseAppPlatform.verifyExtends'.
    FirebaseAppPlatform.verifyExtends(_delegate);
                        ^^^^^^^^^^^^^
Target kernel_snapshot failed: Exception


FAILURE: Build failed with an exception.

* Where:
Script '/home/user/.flutter/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1201

* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command '/home/user/.flutter/flutter/bin/flutter'' finished with non-zero exit value 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3s
Running Gradle task 'assembleDebug'...                              3.9s
Exception: Gradle task assembleDebug failed with exit code 1

相关代码

main.dart

import 'package:flutter/material.dart';
import 'package:precio_luz/screens/main_screen.dart';

void main() {
  runApp(PrecioLuz());
}

class PrecioLuz extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'PrecioLuz',
      theme: ThemeData(
        primarySwatch: Colors.grey,
      ),
      home: MainScreen(),
    );
  }
}

Firestore数据获取代码

int selectedDate =
    0; // 0 for 'Today', 1 for 'Tomorrow', 2 for 'Historical Day'
String selectedHistoricalDate =
    '2023-4-17'; // Replace this with the selected date.

Stream<DocumentSnapshot> getPricesStream() {
  FirebaseFirestore firestore = FirebaseFirestore.instance;

  switch (selectedDate) {
    case 0:
      return firestore
          .collection('electricityPrices')
          .doc('todayData')
          .snapshots();
    case 1:
      return firestore
          .collection('electricityPrices')
          .doc('tomorrowData')
          .snapshots();
    case 2:
      return firestore
          .collection('electricityPrices')
          .doc('historicalData')
          .collection('dates')
          .doc(selectedHistoricalDate)
          .snapshots();
    default:
      throw Exception('Invalid selectedDate: $selectedDate');
  }
}

问题原因

  • FallThroughError是Dart 2.17及以前的API,在Dart 2.19+版本中已被移除。你使用的cloud_firestore_platform_interface-5.7.7依赖了该废弃API,说明当前Flutter SDK版本与Firebase包版本不兼容。
  • FirebaseAppPlatform.verifyExtends在新版firebase_core的平台接口中已被移除/重命名,而firebase_core-1.24.0版本与你的Flutter SDK版本不匹配,导致找不到该成员。

解决办法

1. 统一Flutter与Firebase包版本

  • 执行flutter --version查看当前Flutter版本,根据版本选择兼容的Firebase包(比如Flutter 3.10+需搭配firebase_core ^2.0.0+、cloud_firestore ^4.0.0+)。
  • 修改pubspec.yaml中的依赖:
    dependencies:
      flutter:
        sdk: flutter
      firebase_core: ^2.15.0
      cloud_firestore: ^4.8.0
    
  • 执行flutter pub get更新依赖,再运行flutter clean清理缓存,最后重新执行flutter run。

2. 添加Firebase初始化代码

你的main.dart未初始化Firebase,这是集成Firebase的必要步骤:

import 'package:flutter/material.dart';
import 'package:precio_luz/screens/main_screen.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart'; // 该文件通过`flutterfire configure`生成

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(PrecioLuz());
}

class PrecioLuz extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'PrecioLuz',
      theme: ThemeData(
        primarySwatch: Colors.grey,
      ),
      home: MainScreen(),
    );
  }
}

注意:如果没有firebase_options.dart,需先执行flutterfire configure命令完成Firebase项目配置。

3. 强制升级所有依赖

执行flutter pub upgrade --major-versions,将所有依赖升级到兼容的最新版本,彻底解决版本冲突问题。

内容的提问来源于stack exchange,提问作者Axon Ubeda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:27:41