frenda 0.0.1 copy "frenda: ^0.0.1" to clipboard
frenda: ^0.0.1 copied to clipboard

自动生成包含 `toJson`、`fromJson`、`copyWith`、`toString`、`operator ==` 以及 `hashCode` 方法的 Dart 类

Frenda #

Frenda 是一个旨在提升开发效率的工具,它能够自动生成包含 toJsonfromJsoncopyWithtoStringoperator == 以及 hashCode 方法的 Dart 类。

安装 #

flutter pub add frenda

运行 #

dart run build_runner build --delete-conflicting-outputs

配置 #

  • 在自己的根项目下创建一个 build.yaml 文件,全部配置如下:
targets:
  $default:
    builders:
      frenda:    
        options:
          # 用于标识类的前缀
          prefix: "$"

注解 #

  • @frenda | @Frenda()

用于标注类

  • @filed | @Filed('json序列化的name')

用于标注字段

示例 #

  • user.dart

定义字段

import 'package:frenda/frenda.dart';

part 'user.g.dart';

@frenda
class $User {
  late final String name;

  $User({required this.name});

  Map<String, dynamic> toJson() => {'name': name};

  factory $User.fromJson(Map<String, dynamic> json) {
    return $User(name: json['name']);
  }
}
  • 生成后的 user.g.dart
// dart format width=80
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'user.dart';

// **************************************************************************
// FrendaGenerator
// **************************************************************************

class User implements Serializable {
  final String name;

  User({required this.name});

  @override
  Map<String, dynamic> toJson() => {'name': name};

  factory User.fromJson(Map<String, dynamic> json) {
    return User(name: json['name']);
  }

  User copyWith({String? name}) => User(name: name ?? this.name);

  @override
  String toString() => 'User(name: $name)';

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      (other is User && runtimeType == other.runtimeType && other.name == name);

  @override
  int get hashCode => name.hashCode;
}
  • 使用
import 'user.dart';

void main() {
  final user = User(name: 'test');

  print(user.toJson());
  print(user.hashCode);
}
3
likes
0
points
15
downloads

Publisher

verified publisherdev.tatakai.top

Weekly Downloads

自动生成包含 `toJson`、`fromJson`、`copyWith`、`toString`、`operator ==` 以及 `hashCode` 方法的 Dart 类

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

analyzer, build, flutter, source_gen

More

Packages that depend on frenda