Flutter展示更新日志插件changelog_widgets的使用

Flutter展示更新日志插件changelog_widgets的使用

Damian Aldair 编写。


受 Flutter 的 AboutDialog 启发。

这是展示您的应用更新日志的最简单方法。

开始使用

pubspec.yaml 文件中添加以下依赖:

dependencies:
  changelog_widgets: <latest_version>

初始化

pubspec.yaml 文件中添加 markdown 文件。例如,在 flutter 部分添加:

flutter:
  assets:
    - CHANGELOG.md

导入该包:

import 'package:changelog_widgets/changelog_widgets.dart';

现在,您可以使用这些屏幕和对话框了。

可用组件

  • 原生 Material 屏幕:ChangelogRawScreen
  • 内置 Material 屏幕:ChangelogScreen
  • 内置 Material 对话框:ChangelogDialog
  • 原生 Cupertino 屏幕:CupertinoChangelogRawScreen
  • 内置 Cupertino 屏幕:CupertinoChangelogScreen

完整示例

以下是一个完整的示例代码,展示了如何在 Material 应用中使用 changelog_widgets 插件。

Material 示例

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

void main() {
  runApp(const MyMaterialApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      home: const MaterialScreen(),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    const space = SizedBox.square(dimension: gap); // 假设 gap 是一个定义好的间距值

    return Scaffold(
      appBar: AppBar(
        title: const Text('Material Screen'),
      ),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            ElevatedButton(
              child: const Text('查看原始屏幕'), // 假设 goToTheRawScreen 是一个定义好的字符串
              onPressed: () {
                final screen = ChangelogRawScreen(
                  onLoading: (_) {
                    return const Center(
                      child: Text('加载文件中...'),
                    );
                  },
                  onError: (_) {
                    return const Center(
                      child: Text('错误'),
                    );
                  },
                  bodyBuilder: (_, markdown) {
                    return markdown; // 直接返回 Markdown 内容
                  },
                );
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (_) => screen),
                );
              },
            ),
            space,
            ElevatedButton(
              child: const Text('查看内置屏幕'), // 假设 goToTheScreen 是一个定义好的字符串
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (_) => const ChangelogScreen()),
                );
              },
            ),
            space,
            ElevatedButton(
              child: const Text('显示对话框'), // 假设 showTheDialog 是一个定义好的字符串
              onPressed: () {
                showDialog(
                  context: context,
                  builder: (BuildContext context) {
                    return const ChangelogDialog();
                  },
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter展示更新日志插件changelog_widgets的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter展示更新日志插件changelog_widgets的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter中使用changelog_widgets插件来展示更新日志的示例代码。这个插件可以帮助你以一种用户友好的方式在应用内展示更新日志。

首先,确保你已经在pubspec.yaml文件中添加了changelog_widgets依赖:

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

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

接下来,在你的Flutter项目中,你可以按照以下步骤使用changelog_widgets插件:

  1. 准备更新日志数据

    通常,你会在一个JSON文件中维护更新日志。例如,创建一个名为changelog.json的文件,内容如下:

    [
      {
        "version": "1.0.1",
        "date": "2023-10-01",
        "changes": [
          "修复了一些已知的bug",
          "改进了应用性能"
        ]
      },
      {
        "version": "1.0.0",
        "date": "2023-09-15",
        "changes": [
          "首次发布应用",
          "包含核心功能A和B"
        ]
      }
    ]
    
  2. 加载并展示更新日志

    在你的Flutter应用中,你可以使用Changelog小部件来展示这些更新日志。下面是一个完整的示例代码:

    import 'package:flutter/material.dart';
    import 'package:changelog_widgets/changelog_widgets.dart';
    import 'dart:convert';
    import 'package:flutter/services.dart' show rootBundle;
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: ChangelogScreen(),
        );
      }
    }
    
    class ChangelogScreen extends StatefulWidget {
      @override
      _ChangelogScreenState createState() => _ChangelogScreenState();
    }
    
    class _ChangelogScreenState extends State<ChangelogScreen> {
      List<ChangelogEntry> changelogEntries = [];
    
      @override
      void initState() {
        super.initState();
        _loadChangelog();
      }
    
      Future<void> _loadChangelog() async {
        String jsonData = await rootBundle.loadString('assets/changelog.json');
        List<dynamic> changelogList = jsonDecode(jsonData);
        changelogEntries = changelogList
            .map<ChangelogEntry>((dynamic item) => ChangelogEntry.fromJson(item))
            .toList();
        setState(() {});
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('更新日志'),
          ),
          body: changelogEntries.isEmpty
              ? Center(child: CircularProgressIndicator())
              : Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Changelog(
                    changelogEntries: changelogEntries,
                  ),
                ),
        );
      }
    }
    
    // 定义ChangelogEntry类,用于映射JSON数据
    class ChangelogEntry {
      String version;
      String date;
      List<String> changes;
    
      ChangelogEntry({
        required this.version,
        required this.date,
        required this.changes,
      });
    
      factory ChangelogEntry.fromJson(Map<String, dynamic> json) {
        return ChangelogEntry(
          version: json['version'] as String,
          date: json['date'] as String,
          changes: (json['changes'] as List<dynamic>).map((e) => e as String).toList(),
        );
      }
    }
    
  3. 确保资源文件正确引用

    pubspec.yaml中,确保你已经将changelog.json文件添加到assets部分:

    flutter:
      assets:
        - assets/changelog.json
    
  4. 运行应用

    现在你可以运行你的Flutter应用,应该会看到一个展示更新日志的屏幕。

这个示例展示了如何使用changelog_widgets插件来从JSON文件中加载并展示应用的更新日志。根据你的需求,你可以进一步自定义和扩展这个示例。

回到顶部