Flutter YAML解析插件yamller的使用

Flutter YAML解析插件yamller的使用

YAMMLER

一个用于从YAML生成Dart文件的库。

使用方法

从pub安装

dart pub global activate yamller

命令行使用

yamller --files=[你的配置YAML文件].yaml

示例

YAML文件 (test.yaml)

name: test_pubspec
description: test_pubspec
publish_to: "none"
version: 1.0.0+10
environment:
  sdk: ">=2.12.0 <3.0.0"
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  cupertino_icons: ^1.0.2
  dio: ^4.0.0
dev_dependencies:
  build_runner: ^2.1.0
flutter:
  uses_material_design: true

生成的Dart文件 (test.dart)

// 自动生成的代码 - 请勿手动修改
// ***************************************************************************
// YAMMLER GENERATOR
// https://github.com/laiiihz/yamller
// https://pub.dev/packages/yamller
// ***************************************************************************

class Test {
  const Test();

  static const String name = 'test_pubspec';

  static const String description = 'test_pubspec';

  static const String publishTo = 'none';

  static const String version = '1.0.0+10';

  static final environment = const _Environment0();

  static final dependencies = const _Dependencies1();

  static final devDependencies = const _DevDependencies4();

  static final flutter = const _Flutter5();
}

class _Flutter5 {
  const _Flutter5();

  final bool usesMaterialDesign = true;
}

class _DevDependencies4 {
  const _DevDependencies4();

  final String buildRunner = '^2.1.0';
}

class _Dependencies1 {
  const _Dependencies1();

  final flutter = const _Flutter1();

  final flutterLocalizations = const _FlutterLocalizations2();

  final String cupertinoIcons = '^1.0.2';

  final String dio = '^4.0.0';
}

class _FlutterLocalizations2 {
  const _FlutterLocalizations2();

  final String sdk = 'flutter';
}

class _Flutter1 {
  const _Flutter1();

  final String sdk = 'flutter';
}

class _Environment0 {
  const _Environment0();

  final String sdk = '>=2.12.0 <3.0.0';
}

配置使用

final String name = Test.name; // test_pubspec
final String sdk = Test.environment.sdk; // >=2.12.0 <3.0.0

API 使用

更多关于 yamller 的API文档可以查看 yamller API 文档

RoadMap

0.1.0

  • ❌ 更多配置选项
  • ❌ 使用 build_runner 生成代码

0.2.0

  • ❌ 支持YAML列表

特性与问题

请在 issue追踪器 提交功能请求或报告问题。


示例代码

import 'dart:io';

import 'package:yamller/yamller.dart';

// API 使用
void main() async {
  var file = File('./example/test.yaml');
  var yamller = Yamller();
  var yaml = await yamller.parse(file); // 解析YAML文件
  yamller.toClass(yaml); // 转换为类
  var store = File('./example/test.g.dart');
  if (!await store.exists()) {
    await store.create(); // 创建目标文件
  }
  await store.writeAsString(yamller.toString()); // 将生成的Dart代码写入文件
}

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

1 回复

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


yamller 是一个用于解析和生成 YAML 文件的 Dart/Flutter 插件。它可以帮助你在 Flutter 应用中轻松地读取和写入 YAML 文件。以下是如何在 Flutter 项目中使用 yamller 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  yamller: ^1.0.0  # 根据最新版本号进行替换

然后,运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 yamller 插件。

import 'package:yamller/yamller.dart';

3. 解析 YAML 文件

假设你有一个 config.yaml 文件,内容如下:

name: MyApp
version: 1.0.0
author: John Doe

你可以使用 yamller 来解析这个文件:

import 'dart:io';
import 'package:yamller/yamller.dart';

void main() async {
  final file = File('config.yaml');
  final yamlString = await file.readAsString();
  
  final yamlMap = Yamller.parse(yamlString);
  
  print(yamlMap['name']);    // 输出: MyApp
  print(yamlMap['version']); // 输出: 1.0.0
  print(yamlMap['author']);  // 输出: John Doe
}

4. 生成 YAML 文件

你也可以使用 yamller 来生成 YAML 文件。例如:

import 'dart:io';
import 'package:yamller/yamller.dart';

void main() async {
  final data = {
    'name': 'MyApp',
    'version': '1.0.0',
    'author': 'John Doe',
  };
  
  final yamlString = Yamller.generate(data);
  
  final file = File('output.yaml');
  await file.writeAsString(yamlString);
  
  print('YAML 文件已生成: ${file.path}');
}

5. 处理复杂结构

yamller 也可以处理更复杂的 YAML 结构,例如嵌套的映射和列表。

name: MyApp
version: 1.0.0
author: John Doe
dependencies:
  - flutter
  - http

解析和访问嵌套结构的方式如下:

import 'dart:io';
import 'package:yamller/yamller.dart';

void main() async {
  final file = File('config.yaml');
  final yamlString = await file.readAsString();
  
  final yamlMap = Yamller.parse(yamlString);
  
  print(yamlMap['name']);    // 输出: MyApp
  print(yamlMap['version']); // 输出: 1.0.0
  print(yamlMap['author']);  // 输出: John Doe
  
  final dependencies = yamlMap['dependencies'] as List;
  for (var dep in dependencies) {
    print(dep); // 输出: flutter, http
  }
}

6. 错误处理

在解析 YAML 文件时,可能会遇到格式错误或其他问题。你可以使用 try-catch 来捕获和处理这些错误。

import 'dart:io';
import 'package:yamller/yamller.dart';

void main() async {
  try {
    final file = File('config.yaml');
    final yamlString = await file.readAsString();
    
    final yamlMap = Yamller.parse(yamlString);
    
    print(yamlMap['name']);
  } catch (e) {
    print('解析 YAML 文件时出错: $e');
  }
}
回到顶部