Flutter本地CRUD操作插件shared_crud_local的使用

Flutter本地CRUD操作插件shared_crud_local的使用

shared_crud_local

Static Badge Static Badge

这是一个旨在通过更强大且易于实现的方法来简化CRUD操作的包。它借鉴了Java中的JPA,并专注于字符串操作。由于它利用了shared_preferences,因此能够满足由该包所定义的实现。

如果您希望以自己的方式实现,建议查阅官方文档:shared_preferences文档

本包旨在通过几行代码就能实现一个CRUD,减少头痛问题。

功能

推荐使用Dart内置的编码和解码功能,可以将对象转换为JSON字符串,并在本地存储,从而使得创建、编辑和加载这些信息更加方便。

  • 对象和对象列表的CRUD操作。
String  etBilu = '{"nome":"ET BILU", "idade":"3400"}';

List<String> cafes = [
'{"nome":"cuado", "sabor":"Meio Amargo"}',
'{"nome":"Capuchino", "sabot":"Adocicado"}',
'{"nome":"Expresso", "sabor":"encorpado"}'
];

包的使用

在项目中添加此包时,请注意版本匹配。按照步骤操作后,您的项目将完全支持该包。

pubspec.yaml文件中添加依赖项,如下所示或通过命令:

  • 手动添加:
dependencies:
  shared_crud_local: 1.0.3
  • 使用flutter pub add命令添加:
$ flutter pub add shared_crud_local

查看更新详情

配置完成后,请确保该包已添加到项目的依赖项中。如果一切正常,只需实例化Shared_preferences

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SharedInstance.getInstance(); // 实例化共享偏好设置
  runApp(const MyApp());
}

使用本地对象示例

创建(保存)对象
LocalRepository repository = LocalRepository();
void saveInfo() async {
  await repository.save('{"nome":"ET BILU", "idade":"3400"}'); // 保存对象
}
加载(读取)对象
void loadinfo() async {
  Result response = await repository.load();

  String objeto = response.sucess!;  // {"nome":"ET BILU", "idade":"3400"}
}

更多关于Flutter本地CRUD操作插件shared_crud_local的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter本地CRUD操作插件shared_crud_local的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


shared_crud_local 是一个用于在 Flutter 应用中执行本地 CRUD 操作的插件。它基于 shared_preferences 插件,允许你轻松地在本地存储中执行创建、读取、更新和删除操作。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 shared_crud_local 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  shared_crud_local: ^1.0.0  # 请使用最新版本

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

基本用法

1. 初始化 SharedCRUDLocal

在使用 shared_crud_local 之前,你需要初始化它。通常可以在 main.dart 文件中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SharedCRUDLocal.init();  // 初始化
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

2. 创建数据

你可以使用 create 方法将数据存储到本地:

void _createData() async {
  await SharedCRUDLocal.create('key1', 'value1');
  print('Data created');
}

3. 读取数据

使用 read 方法从本地存储中读取数据:

void _readData() async {
  String? value = await SharedCRUDLocal.read('key1');
  print('Read data: $value');
}

4. 更新数据

使用 update 方法更新已存在的数据:

void _updateData() async {
  await SharedCRUDLocal.update('key1', 'new_value1');
  print('Data updated');
}

5. 删除数据

使用 delete 方法删除数据:

void _deleteData() async {
  await SharedCRUDLocal.delete('key1');
  print('Data deleted');
}

6. 检查数据是否存在

你可以使用 exists 方法检查某个键是否存在:

void _checkData() async {
  bool exists = await SharedCRUDLocal.exists('key1');
  print('Data exists: $exists');
}

完整示例

以下是一个完整的示例,展示了如何使用 shared_crud_local 插件进行 CRUD 操作:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SharedCRUDLocal.init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  void _createData() async {
    await SharedCRUDLocal.create('key1', 'value1');
    print('Data created');
  }

  void _readData() async {
    String? value = await SharedCRUDLocal.read('key1');
    print('Read data: $value');
  }

  void _updateData() async {
    await SharedCRUDLocal.update('key1', 'new_value1');
    print('Data updated');
  }

  void _deleteData() async {
    await SharedCRUDLocal.delete('key1');
    print('Data deleted');
  }

  void _checkData() async {
    bool exists = await SharedCRUDLocal.exists('key1');
    print('Data exists: $exists');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Shared CRUD Local Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _createData,
              child: Text('Create Data'),
            ),
            ElevatedButton(
              onPressed: _readData,
              child: Text('Read Data'),
            ),
            ElevatedButton(
              onPressed: _updateData,
              child: Text('Update Data'),
            ),
            ElevatedButton(
              onPressed: _deleteData,
              child: Text('Delete Data'),
            ),
            ElevatedButton(
              onPressed: _checkData,
              child: Text('Check Data Exists'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部