欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

在这里插入图片描述

前言

在 OpenHarmony 应用开发过程中,经常需要处理自动化构建脚本、脚手架工具或持久化配置。相比于 JSON,YAML 格式由于其出色的可读性,成为了配置文件的首选。

然而,直接通过字符串拼接来生成 YAML 极易产生缩进错误。yaml_writer 为 Flutter 提供了一套优雅的序列化方案,能够将 Dart 对象完美还原为符合规范的 YAML 文本,是极客开发者不可或缺的辅助工具。

一、原理解析

1.1 核心逻辑

yaml_writer 递归遍历 Dart 集合(如 Map 和 List),按照 YAML 规范自动处理缩进、列表短横线及特殊字符转义。

准备待转换的 Map/List 数据

调用 YamlWriter

递归处理嵌套结构

自动生成缩进与样式

输出完美排版的 YAML 文本

1.2 关键特性

  • 自动排版:智能处理多层嵌套,无需开发者操心缩进。
  • 类型安全:支持字符串、数值、布尔值及复杂集合的自动转换。

二、核心 API 详解

2.1 基础序列化

import 'package:yaml_writer/yaml_writer.dart';

void convertToYaml() {
   final writer = YamlWriter();
   
   final config = {
      'ohos_project': {
         'api_version': 11,
         'permissions': ['INTERNET', 'LOCATION'],
         'is_beta': true
      }
   };
   
   // 转换为字符串
   final output = writer.write(config);
   
   print("👑 生成的 YAML:\n$output"); 
}

在这里插入图片描述

三、场景示例:自动化构建参数生成

在鸿蒙 CI/CD 工具链中,通常需要动态生成环境配置文件。

import 'package:yaml_writer/yaml_writer.dart';

void generateBuildEnv() {
   final writer = YamlWriter();
   
   final env = {
       'env': 'Production',
       'build_id': 20240501,
       'author': 'HarmonyDev'
   };
   
   final yamlString = writer.write(env);
   print("👑 生产环境配置已生成:\n$yamlString");
}

在这里插入图片描述

四、OpenHarmony 适配建议

  • 跨端脚本辅助:该工具不仅可在应用中使用,也非常适合编写 Flutter 侧的鸿蒙自动化辅助工具。
  • 字符编码:在鸿蒙系统中保存生成的 YAML 文件时,请务必使用 UTF-8 编码,以确保多语言字符(如中文注释)能被正确识别。

五、综合实战:配置生成助手

import 'package:flutter/material.dart';
import 'package:yaml_writer/yaml_writer.dart';

void main() => runApp(const YamlApp());

class YamlApp extends StatelessWidget {
  const YamlApp({super.key});

  
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(useMaterial3: true, colorSchemeSeed: Colors.amber),
      home: const YamlScreen(),
    );
  }
}

class YamlScreen extends StatefulWidget {
  const YamlScreen({super.key});

  
  State<YamlScreen> createState() => _YamlScreenState();
}

class _YamlScreenState extends State<YamlScreen> {
  String _output = "点击生成 YAML 预览...";

  void _generate() {
      final meta = {
          'harmony_config': {
             'version': '1.0.0',
             'features': ['Push', 'Wallet'],
             'debug': false
          }
      };
      
      setState(() {
         _output = YamlWriter().write(meta);
      });
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('YAML 配置生成实战')),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(20),
        child: Column(
          children: [
            ElevatedButton(onPressed: _generate, child: const Text('生成鸿蒙元数据配置')),
            const SizedBox(height: 20),
            Container(
              width: double.infinity,
              padding: const EdgeInsets.all(15),
              decoration: BoxDecoration(color: Colors.grey[900], borderRadius: BorderRadius.circular(8)),
              child: Text(_output, style: const TextStyle(color: Colors.white70, fontFamily: 'monospace')),
            )
          ],
        ),
      ),
    );
  }
}

在这里插入图片描述

六、总结

yaml_writer 填补了 Dart 生态中 YAML 输出的空白,让 OpenHarmony 应用环境下的配置生成变得有面子、更有底子。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐