搜索分类、插件与代码仓

插件详情v0.1.2

data_class

使用 pkg:macros 在 Dart 中实验性地支持数据类

近 30 天下载
51
喜欢数
60
Pub 分数
50

安装插件

flutter pub add data_class

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

data_class 包通过宏为 Dart 提供了数据类的实验性支持,使定义不可变数据结构更加简洁且无需样板代码。它通过自动创建所需的 toString、hashCode 和 operator == 方法,简化了主要存储数据的类的创建。这提高了代码可读性并减少了手动实现带来的错误。专为希望在 Dart 应用中采用更清晰的数据建模方法的开发者设计,该包与现代 Dart 工具链集成,并支持 JSON 序列化工作流程。

适合场景

  • 定义不可变的数据模型
  • 减少数据类中的样板代码
  • 简化 JSON 序列化
  • 创建干净的领域模型
  • 简化状态管理
  • 提高代码可维护性

主要特点

  • 自动生成 `toString`、`hashCode` 和 `==`
  • 对不可变数据类的支持
  • 与 Dart 宏的集成
  • 最小化样板代码
  • 内置的 JSON 序列化支持
  • 简洁、可读的类定义

适合对象

  • 使用现代 Dart 版本的 Dart 开发人员
  • 需要干净数据建模的项目
  • 使用不可变数据的状态管理
  • JSON-heavy applications
  • 注重代码清晰性和可维护性的团队
  • 原型设计或快速开发

使用建议

  • 实验状态可能影响稳定性
  • 需要支持宏的 Dart
  • 生态系统采用有限
  • 可能需要随 Dart SDK 的更改而更新
  • 不适用于旧版 Dart 项目
  • 宏使用的潜在学习曲线

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

data_class

build pub package License: MIT

Support for data classes in Dart using macros.

✨ Features

🪨 const constructors with required, named parameters

🖨️ copyWith with optional, nullable, named parameters

✨ toString for an improved string representation

☯️ operator== and hashCode for value equality

🧑‍💻 Example

import 'package:data_class/data_class.dart';

@Data()
class Person {
  final String name;
}

void main() {
  // 🪨 Create a const instance with required, name parameters.
  const dash = Person(name: 'Dash');

  // 🖨️ Create copies of your object.
  final sparky = dash.copyWith(name: 'Sparky');

  // ✨ Human-readable string representation.
  print(dash); // Person(name: Dash)
  print(sparky); // Person(name: Sparky)

  // ☯️ Value equality comparisons.
  print(dash == dash.copyWith()); // true
  print(dash == sparky); // false
}

🚀 Quick Start

  1. Add package:data_class to your pubspec.yaml

    dependencies:
      data_class: any
    
  2. Enable experimental macros in analysis_options.yaml

    analyzer:
      enable-experiment:
        - macros
    
  3. Use the @Data annotation (see above example).

  4. Run it

    dart --enable-experiment=macros run main.dart
    

*Requires Dart SDK >= 3.5.0

所属分类

依赖

依赖清单 3 项

源码仓库

使用此插件的项目

暂无相关数据。