1

我正在尝试在我的应用程序中使用颤振沼泽。所以在创建列之后:

import 'package:moor_flutter/moor_flutter.dart';

@DataClassName("LocationTable")
class LocationTables extends Table {
  TextColumn get locationUuid => text()();
  RealColumn get latitude => real()();

现在我想将 locationUuid 作为索引。所以根据它的官方网站,我创建了一个 moor 文件来添加索引:

CREATE INDEX location_uuid_index ON LocationTables (locationUuid);

之后我在 db calss 中添加了这个文件:

@UseMoor(include: {
  'index.moor'
}, tables: [
  UserTables,
  LocationTables,
], daos: [
  UserDao,

])
class Database extends _$Database {

但是在运行构建运行器之后:

pub run build_runner build --delete-conflicting-outputs

我得到了这个错误:

[WARNING] moor_generator:moor_generator on lib/database/database.dart:
line 3, column 37: Target table LocationTables could not be found.
  ╷
3 │ CREATE INDEX location_uuid_index ON LocationTables (locationUuid);
4

1 回答 1

0

我找到了解决办法。我回答帮助某人:

在 moor 文件中,我必须这样写表名:

CREATE INDEX location_uuid_index ON location_tables (location_uuid);

在那之后构建运行器是成功的。

这在 database.g.dart 中添加:

abstract class _$Database extends GeneratedDatabase {
  _$Database(QueryExecutor e) : super(SqlTypeSystem.defaultInstance, e);
  $LocationTablesTable _locationTables;
  $LocationTablesTable get locationTables =>
      _locationTables ??= $LocationTablesTable(this);
  Index _locationUuidIndex;
  Index get locationUuidIndex => _locationUuidIndex ??= Index(
      'location_uuid_index',
      'CREATE INDEX location_uuid_index ON location_tables (locationUuid);');

注意:

  • 位置表

  • location_uuid

于 2021-03-06T15:34:50.410 回答