Flutter数据解析插件unmarshal的使用

Flutter数据解析插件unmarshal的使用

使用

最简单的方式是通过顶级类Unmarshal进行操作。

import 'package:unmarshal/unmarshal.dart';

void main() async {
  /// 加载API密钥,使用你喜欢的方法
  String authToken = 'YOUR_API_KEY';

  /// 初始化主对象
  Unmarshal api = Unmarshal(authToken: authToken);

  try {
    /// 调用API
    Response response = await api.token.getAllTokens(
      page: 1,
      pageSize: 20,
    );
    if (response.statusCode == 200) {
      /// 处理响应
      print(response.statusCode);
      print(json.decode(response.body));
    } else {
      /// 处理服务器错误
      print('服务器错误: ${response.statusCode}');
      print(response.body);
    }
  } catch (e) {
    /// 抛出异常如果发生错误
    print(e);
  }

  /// 关闭连接
  api.close();
}

可用端点

已实现端点

  1. transaction
  2. nft
  3. protocol
  4. price
  5. token
  6. traders
  7. blocks
  8. events

未实现端点

  1. notifications

如果需要通知端点,欢迎在GitHub上提出讨论。

获取帮助

如需帮助,请在GitHub提交问题。

如何贡献

所有反馈和改进建议都受到欢迎:

  1. GitHub上发起讨论
  2. 讨论提议的更改
  3. 提交PR(可选)

支持我的工作

此包的开发得益于那些捐赠金钱、服务或时间以保持项目运行的人和公司。
如果你有兴趣成为赞助者、支持者或贡献者以扩展项目,请在GitHub上联系我。
或者,在0xdir.near上请我喝杯咖啡。

完整示例Demo

以下是一个完整的示例Demo,展示了如何使用unmarshal插件来获取某个地址的NFT信息。

import 'dart:convert';
import 'package:unmarshal/unmarshal.dart';

void main() async {
  /// 加载API密钥,使用你喜欢的方法
  String authToken = 'YOUR_API_KEY';

  /// 初始化主对象
  Unmarshal api = Unmarshal(authToken: authToken);

  try {
    /// 调用API
    Response response = await api.nfts.getNftsByAddress(
      address: 'vitalik.eth',
      chain: 'ethereum',
      offset: 0,
      pageSize: 25,
    );

    if (response.statusCode == 200) {
      /// 处理响应
      print(response.statusCode);
      print(json.decode(response.body));
    } else {
      /// 处理服务器错误
      print('服务器错误: ${response.statusCode}');
      print(response.body);
    }
  } catch (e) {
    /// 抛出异常如果发生错误
    print(e);
  }

  /// 关闭连接
  api.close();
}

更多关于Flutter数据解析插件unmarshal的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter数据解析插件unmarshal的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用unmarshal插件进行数据解析的代码示例。unmarshal插件主要用于将JSON数据解析为Dart对象。

首先,确保你的Flutter项目中已经添加了unmarshal依赖。在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  unmarshal: ^最新版本号  # 请替换为实际的最新版本号

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

接下来,我们编写一个示例来展示如何使用unmarshal进行JSON数据解析。

假设我们有以下JSON数据:

{
  "id": 1,
  "name": "John Doe",
  "email": "john.doe@example.com"
}

我们需要定义一个Dart类来表示这个数据结构,并使用unmarshal进行解析。

  1. 定义一个Dart类:
import 'package:unmarshal/unmarshal.dart';

@UnmarshalClass()
class User {
  int id;
  String name;
  String email;

  User({required this.id, required this.name, required this.email});

  // 从Unmarshal生成的fromJson方法
  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);

  // 用于生成JSON数据的toJson方法(可选)
  Map<String, dynamic> toJson() => _$UserToJson(this);
}

注意:@UnmarshalClass()注解用于标记该类,以便unmarshal生成必要的代码。

  1. 使用unmarshal进行JSON解析:
import 'package:flutter/material.dart';
import 'dart:convert';
import 'user.dart';  // 假设上面的User类定义在user.dart文件中

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

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

class UserFetcher extends StatefulWidget {
  @override
  _UserFetcherState createState() => _UserFetcherState();
}

class _UserFetcherState extends State<UserFetcher> {
  User? user;

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

  Future<void> _fetchUser() async {
    String jsonData = '''
    {
      "id": 1,
      "name": "John Doe",
      "email": "john.doe@example.com"
    }
    ''';

    Map<String, dynamic> jsonMap = jsonDecode(jsonData);
    User parsedUser = User.fromJson(jsonMap);

    setState(() {
      user = parsedUser;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        if (user != null)
          Text('ID: ${user!.id}'),
        if (user != null)
          Text('Name: ${user!.name}'),
        if (user != null)
          Text('Email: ${user!.email}'),
        if (user == null)
          CircularProgressIndicator(),
      ],
    );
  }
}

在这个示例中,我们定义了一个User类,并使用unmarshal注解来生成fromJsontoJson方法。然后在UserFetcher组件中,我们从JSON字符串中解析出一个User对象,并在UI中显示解析后的数据。

请确保在实际项目中运行flutter pub run build_runner build命令以生成unmarshal所需的代码。这个命令会根据注解生成fromJsontoJson方法的实现。

希望这个示例能够帮助你理解如何在Flutter项目中使用unmarshal插件进行数据解析。

回到顶部