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

Flutter升级后Isar Database遇Gradle版本及Namespace未定义问题

Flutter升级后Isar Database适配问题解决方案

1. Gradle版本低于8.0的升级方案

直接修改两个核心配置文件:

  • 打开android/gradle/wrapper/gradle-wrapper.properties,将distributionUrl替换为Gradle 8.x稳定版本(比如8.6):
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
    
  • 打开项目根目录的android/build.gradle,将com.android.tools.build:gradle的版本更新为对应AGP 8.x版本(比如8.0.2):
    dependencies {
        classpath 'com.android.tools.build:gradle:8.0.2'
        // 其他依赖...
    }
    

2. :isar_flutter_libs未配置namespace的临时修复

无需fork源码,直接在自己项目的android/build.gradle中添加子项目配置,自动给目标包补全namespace:

subprojects {
    if (project.name == 'isar_flutter_libs') {
        android {
            namespace 'dev.isar.isar_flutter_libs'
        }
    }
}

同步Gradle后即可解决该报错。

3. IsarLink未定义的问题排查与修复

如果修改包源码后出现这个问题,优先放弃fork,改用官方最新兼容版本:

  • 确保pubspec.yaml中Isar相关依赖使用最新稳定版(比如3.1.0+),并统一版本号:
    dependencies:
      isar: ^3.1.0
      isar_flutter_libs: ^3.1.0
    dev_dependencies:
      isar_generator: ^3.1.0
      build_runner: ^2.4.6
    
  • 重新执行代码生成命令:
    flutter pub run build_runner clean
    flutter pub run build_runner build
    
  • 检查实体类代码是否规范:确保导入package:isar/isar.dart,IsarLink的定义符合要求,示例:
    import 'package:isar/isar.dart';
    
    @collection
    class Post {
      Id id = Isar.autoIncrement;
      late String title;
    }
    
    @collection
    class User {
      Id id = Isar.autoIncrement;
      late String name;
      final posts = IsarLink<Post>(); // 正确定义IsarLink
    }
    

如果坚持使用fork的包,需确保:

  • 所有Isar子模块(isar、isar_generator、isar_flutter_libs)的版本一致
  • 修改AGP版本时未改动Isar核心代码逻辑
  • 重新编译Isar的原生代码模块

内容的提问来源于stack exchange,提问作者Oğuz Aytar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:32:09