我使用 Flutter 创建一个应用。上传新版本时,我需要强制用户更新应用程序。我尝试了this package,但我认为它不起作用。在文档中,我们了解到可以使用此代码验证版本。
DataTable table = new DataTable();
table.Columns.Add("a", typeof(string));
table.Columns.Add("b", typeof(string));
table.Columns.Add("C", typeof(string));
table.Columns.Add("d", typeof(string));
table.Columns.Add("e", typeof(string));
table.Columns.Add("F", typeof(string));
var A = new List<string> { "a", "b", "c" };
// HashSet is a better collection in the context:
// 1. We can specify comparer (e.g. we can ignore case)
// 2. It's faster if the collection has many items
// Sure, you can put A.Contains instead of columnsToKeep.Contains
HashSet<string> columnsToKeep =
new HashSet<string>(A, StringComparer.OrdinalIgnoreCase);
// For i-th column we should either either keep column (do nothing) or remove it
for (int i = table.Columns.Count - 1; i >= 0; --i)
if (!columnsToKeep.Contains(table.Columns[i].ColumnName))
table.Columns.RemoveAt(i);
问题是:我需要在*'initState'中而不是在 Scaffold 中检查版本。那么在应用程序启动时检查版本的正确方法是什么?
答案 0 :(得分:2)
您可以检查您的应用版本,例如
@override
void initState() {
super.initState();
Timer(
Duration(seconds: 3), // put your stuff here
() => Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (BuildContext context) => LoginScreen())));}
并假定此代码必须在spalsh屏幕或主屏幕中 在那里您可以强制检查应用程序版本,停止所有属于旧版本的应用程序
答案 1 :(得分:1)
您可以致电 https://itunes.apple.com/lookup?bundleId=$id
或 https://play.google.com/store/apps/details?id=$id
以接收商店中提供的最新应用程序版本。
我可以推荐这个包来做到这一点:https://pub.dev/packages/new_version
答案 2 :(得分:0)
我建议尝试Firebase Remote Config并在那里更新最低要求的版本。在商店中的每次更新上强制更新应用程序不是一个好习惯。另外,某些用户可以比其他用户更晚地查看给定商店中的更新版本。这就是Google Play和AppStore的工作方式。
因此,当您确实需要强制更新应用程序时,可以在Firebase上增加参数,例如在商店更新后的第二天。
触发对话框的简单代码如下:
Future<bool> checkUpdates() async {
await remoteConfig.fetch();
await remoteConfig.activateFetched();
final requiredBuildNumber = remoteConfig.getInt(Platform.isAndroid
? 'requiredBuildNumberAndroid'
: 'requiredBuildNumberIOS');
final currentBuildNumber = int.parse(packageInfo.buildNumber);
return currentBuildNumber < requiredBuildNumber;
}
这需要添加package_info软件包和firebase_remote_config。
要在商店中打开应用,您需要使用url_launcher软件包,并将URL传递给您的应用。
答案 3 :(得分:0)
尝试在 Android 和 iOS 上运行的更新程序包-https://pub.dev/packages/native_updater。