gpt4 book ai didi

ios - 是否可以在 dart/flutter 项目的编译时获取当前时间?

转载 作者:行者123 更新时间:2023-11-29 05:38:15 28 4
gpt4 key购买 nike

在为复杂的 iOS 应用程序编写添加到应用程序(Flutter 嵌入)时,我遇到了有时无法正确删除导出数据的问题,或者一些奇怪的事情导致我们不知道是否有任何新的更改代码在进行端到端编译时进入应用程序。

除了手动更新时间戳/对 UI 进行小幅更改以确保代码更改实际生效之外,是否有办法将编译日期/时间检索到 dart/flutter 项目中的常量中?

最佳答案

我还想在我的 Dart Web 应用程序中生成构建时间时间戳。经过几个小时的修补后,这是我找到的工作解决方案(它利用了 Dart 的 Build 包)。这并不漂亮,但是嘿,它有效。

首先,在源文件夹中的某个位置创建一个 Dart 文件以仅包含构建时间戳,例如lib/src/utils/build_info.dart;

const String BUILD_TIMESTAMP = '';

其次,在源文件夹中创建另一个 Dart 文件(在本示例中,我使用 src/utils/build_tool.dart),该文件会将时间戳写入上面的 build_info.dart 文件:

import 'dart:async';
import 'dart:io';
import 'package:build/build.dart';

bool wroteBuildTimestamp = false;
String outputFilePath = 'lib/src/utils/build_info.dart';

Builder myTimestampBuilderFactory(BuilderOptions options) {
//print('myTimestampBuilderFactory() called...');

if (!wroteBuildTimestamp) {
/// Write the current timestamp to the given file.
print('myTimestampBuilderFactory(): Writing timestamp to file "${outputFilePath}" ...');

String outputContents = 'const String BUILD_TIMESTAMP = \'${DateTime.now().toIso8601String()}\';\r\n';

File dartFile = File(outputFilePath);
dartFile = await dartFile.writeAsString(outputContents, flush: true); /// truncates the file if it already exists.

wroteBuildTimestamp = true;
}

return MyTimestampBuilder ();
}

/// This class isn't really used. We just need it to convince build_runner to call our myTimestampBuilderFactory() method at build-time.
class MyTimestampBuilder extends Builder {
/// IMPORTANT: build() only gets called for files that been updated (or if the whole build has been cleaned), since build_runner does incremental builds by default. So we can't rely on this method being called for every build.
@override
Future<FutureOr<void>> build(BuildStep buildStep) async {
}

@override
Map<String, List<String>> get buildExtensions {
return const {
'.dart': ['.dart_whatever']
};
}
}

第三,在 build.yaml 文件中添加以下内容:

builders:
my_timestamp_builder:
import: "package:my_package/src/utils/build_tool.dart"
builder_factories: ["myTimestampBuilderFactory"]
build_extensions: {".dart": [".dart_whatever"]}
auto_apply: all_packages

第四,在代码中随意使用 BUILD_TIMESTAMP。我目前在“关于”弹出对话框中显示我的。

关于ios - 是否可以在 dart/flutter 项目的编译时获取当前时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56813759/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com