Flutter插件unruffled_feathersjs的使用方法详解
Flutter插件unruffled_feathersjs的使用方法详解
Unruffled x FeathersJS
unruffled_feathersjs
是一个用于 Flutter 的 FeathersJS 客户端,它默认支持离线管理。
快速开始
1. 添加到 pubspec.yaml
在你的 pubspec.yaml
文件中添加以下依赖:
dependencies:
json_annotation: ^4.5.0
unruffled_feathersjs: ^1.5.0
dev_dependencies:
build_runner: any
json_serializable: ^6.2.0
unruffled_generator: ^1.2.0
注意: Unruffled
依赖于 json_annotation
和 json_serializable
来正常工作,请确保将它们添加到你的依赖项中。
2. 声明模型
声明远程服务使用的模型,并生成 Unruffled
适配器。
import 'package:json_annotation/json_annotation.dart';
import 'package:unruffled_feathersjs/unruffled_feathersjs.dart';
// 使用注解生成适配器
@UnruffledFeathersJsData()
[@JsonSerializable](/user/JsonSerializable)()
class User extends DataModel<User> {
[@override](/user/override)
[@JsonKey](/user/JsonKey)(name: '_id') // 例如 MongoDB 对象具有 '_id' 作为唯一标识符
int? id;
String name;
String surname;
int age;
User({
super.key,
this.id,
required this.name,
required this.surname,
required this.age,
});
// 自动生成 JSON 序列化方法
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
构建你的 Flutter 项目以生成 UserAdapter()
:
flutter pub run build_runner build
注意: 你的类必须包含 String? key
和 Object? id
,并将其传递给 super()
。
id
指的是远程对象的 ID。key
指的是由Unruffled
生成的本地对象 ID。
3. 注册适配器
对于非 Web 平台,使用 path_provider
包来生成目录路径。
import 'package:path_provider/path_provider.dart';
final dir = await getApplicationSupportDirectory(); // path_provider 包
var unruffled = UnruffledFeathersJs(
baseDirectory: dir,
defaultBaseUrl: 'http://example.com',
)
.registerRepository(UserRepository());
4. 初始化 Unruffled
在使用 Unruffled
之前,请确保初始化它。
await unruffled.init();
🚀 这样就完成了!你可以开始使用了!
使用方法
unruffled_feathersjs
提供默认的身份验证和刷新令牌方法,如果需要可以覆盖这些方法。
1. 身份验证
final data = {
"email": "test@test.com",
"password": "test123",
"strategy": "local",
};
Map<String, dynamic> result = await unruffled.authenticate(body: data);
默认情况下,unruffled_feathersjs
使用 DefaultTokenStorageImpl()
自动保存访问令牌并在 Authorization
头部中传递。对于更复杂的情况,你可以通过创建 UnruffledFeathersJs
的混入类或添加 Dio
拦截器来自定义实现。
2. 其他功能
unruffled_feathersjs
扩展了 unruffled
,更多文档请查看包的 官方文档。
示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:unruffled_feathersjs/unruffled_feathersjs.dart';
import 'package:json_annotation/json_annotation.dart';
// 用户模型
[@JsonSerializable](/user/JsonSerializable)()
class User extends DataModel<User> {
[@override](/user/override)
[@JsonKey](/user/JsonKey)(name: '_id')
int? id;
String name;
String surname;
int age;
User({
super.key,
this.id,
required this.name,
required this.surname,
required this.age,
});
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化路径
final dir = await getApplicationSupportDirectory();
var unruffled = UnruffledFeathersJs(
baseDirectory: dir,
defaultBaseUrl: 'http://example.com',
)
.registerRepository(UserRepository());
// 初始化 Unruffled
await unruffled.init();
// 身份验证
final data = {
"email": "test@test.com",
"password": "test123",
"strategy": "local",
};
Map<String, dynamic> result = await unruffled.authenticate(body: data);
print('身份验证结果: $result');
}
更多关于Flutter插件unruffled_feathersjs的使用方法详解的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件unruffled_feathersjs的使用方法详解的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
unruffled_feathersjs
是一个用于 Flutter 的插件,旨在与 Feathers.js 后端服务进行无缝集成。Feathers.js 是一个轻量级的、实时的、基于 Node.js 的 RESTful 和 WebSocket API 框架。unruffled_feathersjs
插件可以帮助 Flutter 开发者更容易地与 Feathers.js 后端进行交互,尤其是在处理实时数据时。
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 unruffled_feathersjs
依赖:
dependencies:
flutter:
sdk: flutter
unruffled_feathersjs: ^0.1.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 基本使用
初始化 Feathers.js 客户端
在使用 unruffled_feathersjs
之前,你需要初始化 Feathers.js 客户端。通常,你可以在应用的 main.dart
文件中进行初始化。
import 'package:unruffled_feathersjs/unruffled_feathersjs.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Feathers.js 客户端
await UnruffledFeathersJs.init(
baseUrl: 'https://your-feathersjs-server.com', // 你的 Feathers.js 服务器地址
socketOptions: SocketOptions(), // 可选的 WebSocket 配置
);
runApp(MyApp());
}
创建数据模型
unruffled_feathersjs
使用数据模型来与 Feathers.js 服务进行交互。你需要为每个 Feathers.js 服务创建一个数据模型。
import 'package:unruffled_feathersjs/unruffled_feathersjs.dart';
class User extends DataModel {
String? name;
int? age;
User({this.name, this.age});
@override
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
};
}
@override
User fromJson(Map<String, dynamic> json) {
return User(
name: json['name'],
age: json['age'],
);
}
}
使用服务进行 CRUD 操作
你可以使用 FeathersService
来进行 CRUD 操作。
import 'package:unruffled_feathersjs/unruffled_feathersjs.dart';
class UserService extends FeathersService<User> {
UserService() : super(path: 'users'); // 'users' 是 Feathers.js 服务的路径
}
// 在应用中使用
final userService = UserService();
// 创建用户
final newUser = User(name: 'John Doe', age: 30);
await userService.create(newUser);
// 获取用户列表
final users = await userService.find();
// 获取单个用户
final user = await userService.get('userId');
// 更新用户
final updatedUser = user.copyWith(name: 'Jane Doe');
await userService.update('userId', updatedUser);
// 删除用户
await userService.remove('userId');
实时数据订阅
unruffled_feathersjs
支持通过 WebSocket 订阅实时数据更新。
final subscription = userService.onCreated().listen((user) {
print('New user created: ${user.name}');
});
3. 高级功能
认证与授权
unruffled_feathersjs
支持 Feathers.js 的认证与授权机制。你可以使用 AuthService
来处理用户登录、注销等操作。
final authService = AuthService();
// 用户登录
await authService.authenticate({
'strategy': 'local',
'email': 'user@example.com',
'password': 'password',
});
// 用户注销
await authService.logout();
错误处理
unruffled_feathersjs
提供了丰富的错误处理机制,你可以捕获和处理 Feathers.js 服务返回的错误。
try {
await userService.create(newUser);
} on FeathersJsException catch (e) {
print('Feathers.js error: ${e.message}');
}