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

Flutter集成Firestore遇权限拒绝及DynamiteModule加载错误求助

Flutter集成Firebase Firestore问题排查与解决

在Flutter项目集成Firebase Firestore时,遇到DynamiteModule加载警告,以及点击按钮调用DocumentReference.get()时触发Firestore权限拒绝未处理异常,相关日志和代码如下:

运行日志

W/DynamiteModule( 6380): 未找到com.google.android.gms.providerinstaller.dynamite的本地模块描述类。
I/DynamiteModule( 6380): 正在考虑本地模块com.google.android.gms.providerinstaller.dynamite:0和远程模块com.google.android.gms.providerinstaller.dynamite:0
W/ProviderInstaller( 6380): 加载providerinstaller模块失败:未找到可接受的com.google.android.gms.providerinstaller.dynamite模块。本地版本为0,远程版本为0。
W/Firestore( 6380): (24.4.0) [Firestore]: 监听Query(target=Query(users/firstName order by <strong>name</strong>);limitType=LIMIT_TO_FIRST)失败:Status{code=PERMISSION_DENIED, description=权限缺失或不足, cause=null}
E/flutter ( 6380): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] 未处理异常:[cloud_firestore/permission-denied] 调用者无权限执行指定操作。
E/flutter ( 6380): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:653:7)
E/flutter ( 6380): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:296:18)
E/flutter ( 6380): 
E/flutter ( 6380): #2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:499:43)
E/flutter ( 6380): 
E/flutter ( 6380): #3      MethodChannelDocumentReference.get (package:cloud_firestore_platform_interface/src/method_channel/method_channel_document_reference.dart:69:42)
E/flutter ( 6380): 
E/flutter ( 6380): #4      _JsonDocumentReference.get (package:cloud_firestore/src/document_reference.dart:146:7)
E/flutter ( 6380): 
E/flutter ( 6380): #5      ProductList.build. (package:firebasekurulum/basket.dart:16:28)
E/flutter ( 6380): 
E/flutter ( 6380):
W/Firestore( 6380): (24.4.0) [WatchStream]: (f4f9d06) 流已关闭,状态:Status{code=CANCELLED, description=断开空闲流。等待新目标超时, cause=null}。

项目代码

main.dart

import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'basket.dart';

void main() async{
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: ProductList()
    );
  }
}

basket.dart

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_core/firebase_core.dart';

class ProductList extends StatelessWidget {
  final fireStore = FirebaseFirestore.instance;

  @override
  Widget build(BuildContext context) {
    CollectionReference datas = fireStore.collection('users');
    var ref = datas.doc('firstName');
    return Scaffold(
      body: Center(
          child: TextButton(
        child: Text("press"),
        onPressed: () async {
          var response = await ref.get();
          print("here is your data :  $response['firsName']");
        },
      )),
    );
  }
}

解决方法

1. Firestore权限拒绝错误(核心问题)

该错误源于Firestore默认安全规则禁止未授权访问:

  • 临时调试方案:在Firebase控制台的Firestore规则页面,将规则修改为:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

注意:上线前必须替换为严格权限规则,比如限制仅认证用户访问:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

2. DynamiteModule加载警告

该警告多因设备Google Play服务版本过低或不完整,一般不影响功能:

  • 确保测试设备/模拟器安装最新版Google Play服务;
  • 模拟器选择包含Google Play的系统镜像;
  • 执行flutter clean清理缓存后重新运行项目。

3. 代码语法错误修正

basket.dart中的打印语句存在变量解析和拼写错误,修改为:

print("here is your data :  ${response['firstName']}");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:25:25