import 'dart:io';
// ignore: depend_on_referenced_packages
import 'package:build/build.dart';
Builder appBuildTimestampGenerator(BuilderOptions options) => AppBuildTimestampGeneratorBuilder();
class AppBuildTimestampGeneratorBuilder implements Builder {
@override
final buildExtensions = {
'.dart': ['.my_gen.dart']
};
@override
Future<void> build(BuildStep _) async {
final outputFile = File('lib/common/build/app_build_timestamp.g.dart');
await outputFile.writeAsString('''
// Generated file on build.
/// Timestamp that records last build of the app. Can be shown in the app.
const int lastAppBuildTimestamp = ${DateTime.now().millisecondsSinceEpoch};
''');
}
}
4条答案
按热度按时间rt4zxlrg1#
您可以使用构建shell脚本在
lib/...
中创建/更新Dart文件,并使用常量保存运行flutter build ...
之前的日期。然后在代码中导入该文件并使用它。
0qx6xfy62#
我建议您也考虑基本上滚动您自己版本的package_info库,其中包括您希望从平台代码中获得的所有信息。我使用Gradle构建文件来更新每个构建的一些变量,然后从Flutter中检索这些变量。
检查package_info代码可以发现它实际上是一个相当简单的MethodChannel用例。你可以添加任何你可以从本地端得到的东西。
zzwlnbp83#
展开Günter Zöchbauer的回答...
1.在源文件夹中创建一个文本文件并输入以下内容
!/bin/sh
var =“final DateTime buildDate = DateTime.fromMillisecondsSinceEpoch(($(date“+%s000”)));”
echo“$var”> lib/build_date.dart
1.将文本文件另存为
build_date_script.sh
1.在Android Studio中,打开Edit Configurations -> Add New Configuration并添加一个新的'Shell Script'
1.给予它一个名字,比如'Writebuildate'
1.选择“脚本文件”并输入我们在第2阶段创建的“build_date_script.sh”的位置。
1.下载并安装GitBash https://gitforwindows.org/
1.返回Android Studio,将解释器路径更改为“C:\Program Files\Git\git-bash.exe”。
1.取消选中“在终端中执行”并单击“应用”
1.然后在你的主flutter运行配置中,添加一个'Before launch'项,选择'Run another configuration'并选择我们在阶段4中命名的脚本配置。
1.单击“确定”。
现在,每次构建时,它都会在lib文件夹中创建一个名为'build_date.dart'的新dart文件,其中包含一个名为'buildDate'的变量,用于在应用程序中使用构建日期。
uqcuzwp84#
我正在使用Dart团队的build package添加我的解决方案。
1.在
pubspec.yaml
中添加依赖项:1.将这个类添加到你的项目中的任何目录(我把我的放在
/lib/common/build/
文件夹中,你可以把它放在你的目录中,不要忘记在代码中更改目录):1.添加
build.yaml
并将以下内容放入其中(替换package_name
并编辑目录):1.运行命令:
dart run build_runner build --delete-conflicting-outputs
1.在您的目录中生成名为
app_build_timestamp.g.dart
的文件。1.您可以在项目中使用
lastAppBuildTimestamp
。这对我很有效。使用Flutter 3.10.x和Dart 3.0.1