Flutter插件stormberry的使用_一个用于在 Dart 类和 PostgreSQL 数据库之间提供简单绑定的强类型 PostgreSQL ORM

Flutter插件stormberry的使用_一个用于在 Dart 类和 PostgreSQL 数据库之间提供简单绑定的强类型 PostgreSQL ORM

Stormberry


一个用于在 Dart 类和 PostgreSQL 数据库之间提供简单绑定的强类型 PostgreSQL ORM。它支持所有类型的关系而无需任何复杂的配置


快速开始

添加依赖

首先,在你的 pubspec.yaml 文件中添加 stormberry 作为依赖,并添加 build_runner 作为开发依赖:

dart pub add stormberry
dart pub add build_runner --dev

定义模型

在你的代码中,指定一个抽象类来表示表:

// 这个文件是 "model.dart"
import 'package:stormberry/stormberry.dart';

// 将由 stormberry 自动生成
part 'model.schema.dart';

@Model()
abstract class User {
  @PrimaryKey()
  String get id;

  String get name;
}

生成数据库代码

运行以下命令以生成数据库代码:

dart run build_runner build

提示:每次修改模型时,都需要重新运行代码生成。在开发过程中,可以使用 watch 自动监视更改:

dart pub run build_runner watch

这将生成一个 .schema.dart 文件,你应该将其作为 part 添加到原始模型文件中。

迁移数据库

在运行应用程序之前,必须迁移数据库。为此,请运行:

dart run stormberry migrate

这将提示你输入 PostgreSQL 数据库的连接详细信息,然后通过添加 users 表来迁移数据库模式。

访问数据库

要从应用程序访问数据库,请创建一个 Database 实例并使用 users 仓库:

void main() async {
  var db = Database(
    // 连接参数
  );

  // 向 'users' 表中添加一个用户
  await db.users.insertOne(UserInsertRequest(id: 'abc', name: 'Alex'));

  // 根据 'id' 查找用户
  var user = await db.users.queryUser('abc');

  assert(user.name == 'Alex');
}

完整文档

查看完整的文档 在这里 或直接跳转到你需要的部分:


示例代码

下面是完整的示例代码:

import 'package:stormberry/stormberry.dart';

import 'models/account.dart';
import 'models/address.dart';
import 'models/company.dart';
import 'models/latlng.dart';

Future<void> main() async {
  var db = Database(
    port: 2222,
    database: 'dart_test',
    username: 'postgres',
    password: 'postgres',
    useSSL: false,
  );

  db.debugPrint = true;

  await db.companies.deleteOne('abc');

  await db.companies.insertOne(CompanyInsertRequest(
    id: 'abc',
    name: 'Minga',
    addresses: [],
  ));

  await db.accounts.deleteMany([0, 1, 2]);

  var accountId = await db.accounts.insertOne(AccountInsertRequest(
    firstName: 'Test',
    lastName: 'User',
    location: LatLng(1, 2),
    billingAddress: BillingAddress(
      name: 'Test User',
      street: 'SomeRoad 1',
      city: 'New York',
      postcode: '123',
    ),
    companyId: 'abc',
  ));

  var account = await db.accounts.queryUserView(accountId);

  print(account!.id);

  var company = await db.companies.queryFullView('abc');

  print(company!.id);

  await db.close();
}

更多关于Flutter插件stormberry的使用_一个用于在 Dart 类和 PostgreSQL 数据库之间提供简单绑定的强类型 PostgreSQL ORM的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件stormberry的使用_一个用于在 Dart 类和 PostgreSQL 数据库之间提供简单绑定的强类型 PostgreSQL ORM的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


探索和使用Flutter中的未知功能插件(如stormberry)可能涉及到对插件的源代码、文档或示例代码的研究。由于我无法直接访问外部资源或未知插件的详细信息,我将提供一个通用的方法来探索和使用一个Flutter插件,并以假设的方式展示如何可能集成stormberry(如果它是一个Flutter插件的话)。请注意,这里的代码是基于假设和一般性的Flutter插件使用流程。

步骤 1: 添加依赖

首先,你需要在pubspec.yaml文件中添加stormberry插件的依赖。假设stormberry插件在pub.dev上可用,你可以这样添加:

dependencies:
  flutter:
    sdk: flutter
  stormberry: ^x.y.z  # 替换为实际的版本号

然后运行flutter pub get来下载并安装依赖。

步骤 2: 导入插件

在你的Dart文件中导入stormberry插件:

import 'package:stormberry/stormberry.dart';

步骤 3: 使用插件功能

由于我们不知道stormberry插件的具体功能,我将提供一个假设性的使用案例。假设stormberry插件提供了一个名为fetchData的方法,用于从某个服务获取数据。

import 'package:flutter/material.dart';
import 'package:stormberry/stormberry.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Stormberry Plugin Demo'),
        ),
        body: StormberryDemo(),
      ),
    );
  }
}

class StormberryDemo extends StatefulWidget {
  @override
  _StormberryDemoState createState() => _StormberryDemoState();
}

class _StormberryDemoState extends State<StormberryDemo> {
  String? data;

  @override
  void initState() {
    super.initState();
    _fetchData();
  }

  Future<void> _fetchData() async {
    try {
      // 假设fetchData是stormberry插件提供的方法
      var result = await Stormberry.fetchData();
      setState(() {
        data = result.toString(); // 假设返回的是一个可以被转换为字符串的对象
      });
    } catch (e) {
      print('Error fetching data: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: data != null
          ? Text('Fetched Data: $data')
          : CircularProgressIndicator(),
    );
  }
}

注意事项

  1. 插件文档:在实际使用中,你应该首先查阅stormberry插件的官方文档,了解它的API和功能。
  2. 示例代码:如果插件提供了示例代码,运行示例代码是了解插件功能的快速方法。
  3. 错误处理:在实际应用中,你应该添加适当的错误处理逻辑来处理可能发生的异常情况。
  4. 依赖版本:确保你使用的插件版本与你的Flutter SDK版本兼容。

由于stormberry是一个假设的插件,上述代码可能需要根据实际插件的API进行调整。如果你能提供stormberry插件的更多信息或文档链接,我可以提供更具体的帮助。

回到顶部