Flutter版本管理插件revisions的使用

Revisions SDK for Flutter #

therevisions.app | Console | Pub

  • Console: The Revisions console 提供了一种类似 Notion 的体验来发布你的发行说明
  • 通用兼容性: 用 Dart 编写,Revisions 兼容 Android、iOS、Web、macOS、Windows、Linux 和 IoT
  • 免费: 在测试阶段,Revisions 是免费的
Revisions Logo

3-Minute 快速入门 #

1. 创建一个帐户和项目 #

首先访问 Revisions 控制台: Revisions 控制台。 使用 GitHub 创建你的免费帐户。

然后创建一个具有描述性名称的项目。

2. 将 Revisions 添加到你的 pubspec.yaml #

$ flutter pub add revisions

3. 显示时间线 #

import 'package:revisions/revisions.dart';

Scaffold( appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title), ), body: const RevisionsTimeline(domain: ‘your-domain.therevisions.app’), // 获取你的域名从 Revisions 控制台 );

```

example/lib/main.dart

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

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

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

// 这个小部件是你的应用的根。 @override Widget build(BuildContext context) { return MaterialApp( title: ‘修订反馈’, theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepOrange), ), home: const MyHomePage(title: ‘Flutter 示例首页’), ); } }

class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title});

final String title;

@override State<MyHomePage> createState() => _MyHomePageState(); }

class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title), ), body: const RevisionsTimeline(domain: ‘revisions-github.revisions.me’), // 替换为你的实际域名 ); } }


更多关于Flutter版本管理插件revisions的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter版本管理插件revisions的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter开发中,revisions 插件并不是官方提供的一个标准插件,用于版本管理的插件通常是 flutter_version 或者通过 version 字段在 pubspec.yaml 中直接管理。不过,如果你的需求是在Flutter应用中管理和展示应用的版本信息,并且你提到的 revisions 是指某种自定义或第三方插件来管理版本历史记录或回滚功能,我们可以创建一个类似功能的示例代码。

不过,由于 revisions 不是标准插件,我将展示如何使用Flutter和Dart管理版本信息,并展示一个简单的版本历史记录查看功能,这可能与你提到的 revisions 插件的功能相近。

步骤 1: 创建版本信息文件

首先,我们可以创建一个 JSON 文件来存储应用的版本历史记录。例如,创建一个名为 version_history.json 的文件:

[
    {
        "version": "1.0.0",
        "release_date": "2023-10-01",
        "notes": "Initial release."
    },
    {
        "version": "1.0.1",
        "release_date": "2023-10-05",
        "notes": "Fixed minor bugs and improved performance."
    },
    {
        "version": "1.1.0",
        "release_date": "2023-10-10",
        "notes": "Added new features and updated UI."
    }
]

步骤 2: 在Flutter应用中读取版本历史记录

接下来,在你的Flutter项目中,创建一个 Dart 文件来读取和解析这个 JSON 文件。例如,创建一个名为 version_service.dart 的文件:

import 'dart:convert';
import 'package:flutter/material.dart';
import 'dart:async' show Completer;
import 'package:http/http.dart' as http;

class VersionHistory {
  String version;
  String releaseDate;
  String notes;

  VersionHistory({required this.version, required this.releaseDate, required this.notes});

  factory VersionHistory.fromJson(Map<String, dynamic> json) {
    return VersionHistory(
      version: json['version'] as String,
      releaseDate: json['release_date'] as String,
      notes: json['notes'] as String,
    );
  }
}

class VersionService {
  Future<List<VersionHistory>> fetchVersionHistory() async {
    final response = await http.get(Uri.parse('assets/version_history.json'));

    if (response.statusCode == 200) {
      List<dynamic> body = jsonDecode(response.body);

      List<VersionHistory> versionHistoryList = body
          .map((dynamic item) => VersionHistory.fromJson(item as Map<String, dynamic>))
          .toList();

      return versionHistoryList;
    } else {
      throw Exception('Failed to load version history');
    }
  }
}

注意:由于我们是直接从本地文件读取,这里使用了 http 包模拟网络请求。在实际应用中,你可能需要将 JSON 文件嵌入到 Flutter 资产中,并使用 rootBundle.loadString 方法来加载它。

步骤 3: 在UI中展示版本历史记录

最后,在你的主应用文件中(例如 main.dart),创建一个页面来展示版本历史记录:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Version History',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: VersionHistoryScreen(),
    );
  }
}

class VersionHistoryScreen extends StatefulWidget {
  @override
  _VersionHistoryScreenState createState() => _VersionHistoryScreenState();
}

class _VersionHistoryScreenState extends State<VersionHistoryScreen> {
  late Future<List<VersionHistory>> futureVersionHistory;

  @override
  void initState() {
    super.initState();
    futureVersionHistory = VersionService().fetchVersionHistory();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Version History'),
      ),
      body: FutureBuilder<List<VersionHistory>>(
        future: futureVersionHistory,
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            if (snapshot.hasError) {
              return Center(
                child: Text('Error: ${snapshot.error}'),
              );
            } else {
              List<VersionHistory> versionHistoryList = snapshot.data!;
              return ListView.builder(
                itemCount: versionHistoryList.length,
                itemBuilder: (context, index) {
                  VersionHistory versionHistory = versionHistoryList[index];
                  return Card(
                    child: ListTile(
                      title: Text('Version ${versionHistory.version}'),
                      subtitle: Text('Released on ${versionHistory.releaseDate}\n${versionHistory.notes}'),
                    ),
                  );
                },
              );
            }
          } else {
            return Center(
              child: CircularProgressIndicator(),
            );
          }
        },
      ),
    );
  }
}

这个示例展示了如何从本地 JSON 文件读取版本历史记录,并在Flutter应用中展示它们。如果你的 revisions 插件有特定的功能需求(如版本回滚等),你可能需要根据具体需求进一步扩展这个示例。不过,上面的代码提供了一个基础框架,可以帮助你开始管理和展示版本信息。

回到顶部