-1

我在颤振中为我的应用程序使用 moor 包。我按照在线说明 https://moor.simonbinder.eu/docs/getting-started/starting_with_sql/#what-moor-generates

但是当我运行构建命令时:flutter pub run build_runner 构建生成的 appdatabase.g.dart 文件有错误。这是错误的快照:

在此处输入图像描述

在此处输入图像描述

这是我的依赖项

cupertino_icons: ^0.1.2
  month_picker_dialog: ^0.3.1
  flutter_cupertino_localizations: ^1.0.1
  moor: ^2.3.0
  provider: ^4.0.3
  moor_ffi: ^0.4.0
  path_provider: ^1.6.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  intl_translation: ^0.17.1
  moor_generator: ^2.3.1
  build_runner:

问题似乎与“表”类有关。飞镖和摩尔之间存在冲突。该消息表明有两个版本。我该如何解决这个问题,以便我的错误消失

4

3 回答 3

0
dependencies:
  flutter:
    sdk: flutter
  #moor database

   moor_flutter: ^3.1.0

  # For the UI
  provider: ^4.3.1

  # For OS-specific directory paths
  path_provider: ^1.6.11
  cupertino_icons: ^0.1.3

dev_dependencies:
  flutter_test:
    sdk: flutter

   #new Dependencies  add

   moor_generator: ^3.2.0
 
   build_runner:

第 1 步:删除文件 appdatabase.g.dart

第2步:扑干净

第三步:flutter pub get

第四步:flutter pub run build_runner build watch

于 2020-07-27T17:05:04.377 回答
0

答案是使用 import 'package:flutter/widgets.dart' hide Table;

于 2020-02-09T16:46:24.610 回答
0

当您的 AppDb 类中没有表或 dao 的“导入”时会发生此错误,在我的情况下,我有 90 多个表和 dao,然后我在一个带有静态列表的类中分开,但我需要做由于错误,我的文件也在 app_database.dart 中的导入。

我有这个表类:

import '../tables/table_one.dart';
import '../tables/table_two.dart';

class TableList {  
  static const List<Type> tables = [
    TableOne,
    TableTwo,
  ]
}

另一个用于 Dao 文件:

import '../dao/table_one_dao.dart';
import '../dao/table_two_dao.dart';

class DaoList{  
  static const List<Type> daos= [
    TableOne,
    TableTwo,
  ]
}

这是我的 AppDb 类:

import '../tables/table_one.dart';
import '../tables/table_two.dart';
import '../dao/table_one_dao.dart';
import '../dao/table_two_dao.dart';
part 'app_db.g.dart';

@DriftDatabase(
  tables: TableList.tables,
  daos: DaoList.daos,
)
class AppDb extends _$AppDb {
  AppDb() : super(_openConnection());

  @override
  int get schemaVersion => 1;
}

LazyDatabase _openConnection() {
  return LazyDatabase(() async {
    final dbFolder = await getApplicationDocumentsDirectory();
    final file = File(p.join(dbFolder.path, 'app_database.db'));
    return NativeDatabase(file);
  });
}

如您所见,我必须在我的 AppDb 文件中再次声明导入才能解决。如果您直接在 AppDb escope 中声明您的表,我认为您没有问题。

于 2022-01-26T20:55:30.193 回答