Flutter版本控制插件git_stamp的使用
Flutter版本控制插件git_stamp的使用
Git Stamp 🏷 Stamp Every App Build!
Git Stamp 是一个先进的无需等待(await-less)信息提供者和开发工具,旨在为每次应用程序构建打上Git相关信息的“戳记”。它能够帮助开发者在Flutter项目中精确记录应用版本、构建日期、分支信息及SHA等数据。以下是关于如何使用Git Stamp进行版本控制的具体说明。
🗻️ Preview
Git Config | Details |
---|---|
📑️ About (Changelog)
Why Git Stamp?
当与Flutter和Git一起工作时,特别是在团队环境中,忘记运行git pull
等人为错误可能会导致分支合并期间出现问题。Git Stamp通过提供以下功能来解决这些问题:
- Build Date, SHA & Branch Information - 精确确定部署的应用程序版本。
- Debugging and Troubleshooting - 便于识别问题代码。
- Avoiding Lost Changes in Teamwork - 防止因忽略
git pull
命令而导致的更改丢失。 - Caching Issues in the Web Version - 帮助识别加载的是已部署版本还是过期版本。
Mechanism 🕯️
graph TD
CODE((SOURCE CODE))--->SYNC(flutter pub get)
SYNC--->BUILD(flutter build ...)
subgraph "App"
CODE
PUB
PUB((PACKAGES))--->CODE
end
subgraph "Git Stamp"
GIT_CLI(GIT CLI)--->GENERATOR
DART_CLI(DART CLI)--->GENERATOR
FLUTTER_CLI(FLUTTER CLI)--->GENERATOR
end
subgraph "Git Stamp CLI"
GENERATE
ADD
end
GENERATOR((GENERATOR))--->ADD(~$ dart pub add git_stamp)
ADD--->|Add package|PUB
GENERATOR--->GENERATE(~$ dart run git_stamp)
GENERATE--->|Create ./git_stamp directory with .dart files|CODE
🛠️ Installation
在pubspec.yaml
文件中添加依赖:
dependencies:
git_stamp: ^5.2.0
dependency_overrides:
meta: ^1.1.5
🏗️ Generating
执行生成命令:
dart run git_stamp --build-type full
💻 Usage
在需要显示Git信息的地方调用GitStamp
类的方法:
import 'git_stamp/git_stamp.dart';
Text('Version: ${GitStamp.appVersion}'),
Text('Build: ${GitStamp.appBuild}'),
Text('Branch: ${GitStamp.buildBranch}'),
Text('SHA: ${GitStamp.sha}'),
或者使用GitStamp.listTile
方法创建一个包含Git信息的列表项:
if (kDebugMode) ...[
GitStamp.listTile(
context: context,
monospaceFontFamily: GoogleFonts.spaceMono().fontFamily,
),
],
示例代码
下面是一个完整的示例代码,展示了如何将Git Stamp集成到Flutter应用程序中:
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:google_fonts/google_fonts.dart';
import 'git_stamp/git_stamp.dart';
String? get monospaceFontFamily {
return kIsWeb ? GoogleFonts.sourceCodePro().fontFamily : 'SourceCodePro';
}
void main() {
LicenseRegistry.addLicense(() async* {
final license = await rootBundle.loadString('google_fonts/OFL.txt');
yield LicenseEntryWithLineBreaks(['google_fonts'], license);
});
runApp(ExampleApp());
}
class ExampleApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MainPage(),
themeMode: ThemeMode.system,
theme: ThemeData.light(),
darkTheme: ThemeData.dark(),
debugShowCheckedModeBanner: false,
);
}
}
class MainPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Example App'),
actions: [
IconButton(
icon: Icon(Icons.settings),
onPressed: () => navigateToSettings(context),
),
],
),
body: Center(
child: Text(
'Example app',
style: Theme.of(context).textTheme.headlineMedium,
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => navigateToSettings(context),
child: const Icon(Icons.add),
),
);
}
static void navigateToSettings(BuildContext context) {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SettingsPage()),
);
}
}
class SettingsPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Settings Page'),
actions: [
GitStamp.icon(),
],
),
body: Column(
children: [
FutureBuilder<int>(
future: LicenseRegistry.licenses.length,
builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
return ListTile(
title: Text('Open Source Licenses'),
subtitle: Text(snapshot.data?.toString() ?? 'Loading'),
leading: const Icon(Icons.gavel),
onTap: () => GitStamp.showLicensePage(context: context),
);
},
),
ListTile(
title: Text('Version'),
subtitle: Text(GitStamp.appVersion),
leading: const Icon(Icons.numbers),
onTap: () {},
),
GitStamp.listTile(
context: context,
monospaceFontFamily: monospaceFontFamily,
),
],
),
);
}
}
通过以上步骤,您可以轻松地将Git Stamp集成到您的Flutter项目中,并利用其提供的强大功能来管理和跟踪应用程序的版本信息。
更多关于Flutter版本控制插件git_stamp的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter版本控制插件git_stamp的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用git_stamp
插件来进行版本控制的示例代码。git_stamp
插件可以帮助你在构建时自动获取Git信息,并将其嵌入到你的应用中。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加git_stamp
依赖:
dependencies:
flutter:
sdk: flutter
# 其他依赖项...
git_stamp: ^x.y.z # 替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 初始化GitStamp
在你的Flutter项目中,创建一个新的Dart文件,比如git_info.dart
,用于初始化GitStamp
并获取Git信息。
// git_info.dart
import 'package:flutter/material.dart';
import 'package:git_stamp/git_stamp.dart';
Future<Map<String, String>> getGitInfo() async {
// 初始化GitStamp
final gitStamp = GitStamp();
// 获取Git信息
final info = await gitStamp.getStamp();
return info;
}
3. 使用Git信息
接下来,你可以在你的应用中使用这些Git信息。例如,在一个简单的Flutter应用中,你可以将这些信息展示在一个Text
组件中。
// main.dart
import 'package:flutter/material.dart';
import 'git_info.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter GitStamp Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Map<String, String>? gitInfo;
@override
void initState() {
super.initState();
_loadGitInfo();
}
Future<void> _loadGitInfo() async {
final info = await getGitInfo();
setState(() {
gitInfo = info;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('GitStamp Demo'),
),
body: Center(
child: gitInfo == null
? CircularProgressIndicator()
: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Git Commit Hash: ${gitInfo?['commitHash']}'),
Text('Git Branch: ${gitInfo?['branch']}'),
Text('Git Author: ${gitInfo?['author']}'),
Text('Git Message: ${gitInfo?['message']}'),
Text('Git Timestamp: ${gitInfo?['timestamp']}'),
],
),
),
);
}
}
4. 运行应用
确保你的Git仓库是干净的,并且你已经提交了至少一个更改,然后运行你的Flutter应用:
flutter run
你应该会看到一个界面,显示了Git的提交哈希、分支、作者、提交信息和时间戳等信息。
这样,你就成功地在Flutter项目中使用git_stamp
插件来获取和展示Git版本控制信息了。