我在 flutter 中使用 new_vesrion ^0.3.1 包来显示警报对话框,如果 flutter 应用程序商店中有新版本可用,则显示更新应用程序,但我收到以下书面异常:
[ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: RangeError (index): Invalid value: Valid value range is empty: 1
E/flutter ( 5988): #0 List.[] (dart:core-patch/growable_array.dart:264:36)
E/flutter ( 5988): #1 NewVersion._getAndroidStoreVersion (package:new_version/new_version.dart:195:26)
E/flutter ( 5988): <asynchronous suspension>
E/flutter ( 5988): #2 _SplashScreenState._checkVersion (package:cardicare/appScreens/Splash_Screen.dart:124:20)
Run Code Online (Sandbox Code Playgroud)
下面我给出了为显示颤振应用程序新更新的警报对话框而编写的代码:
void _checkVersion() async
{
final newVersion = NewVersion
(
androidId: androidAppId,
iOSId: iOSAppId
);
final status = await newVersion.getVersionStatus();
if(status!=null)
{
if(status.canUpdate)
{
newVersion.showUpdateDialog
(
context: context,
versionStatus: status,
dialogTitle: "Update!!!",
//dismissButtonText: "Skip",
dialogText: "Please update your app from "+"${status.localVersion}"+ " to "+ "${status.storeVersion}",
allowDismissal: false,
dismissAction: ()
{
SystemNavigator.pop();
},
updateButtonText: "Let's Update"
);
}
print("app version on Device "+"${status.localVersion}");
print("app version on store "+"${status.storeVersion}");
}
}
Run Code Online (Sandbox Code Playgroud)
并且在启动画面的 initState() 中调用 _checkVersion() 方法。所以请帮我解决这个问题。
E. *_*eff 19
我想我找到了问题,我查看了库并与 google 的返回结果进行比较,如果你将 GET 发送到 [https://play.google.com/store/apps/details?id=APP_ID&hl=en]
我认为谷歌已经改变了他们的返回,在版本返回 ds:4 脚本之前,但现在它返回 ds:5
如果你将 new_version.dart 中的第 183 行更改为
(elm) => elm.text.contains('key: \'ds:5\''),
Run Code Online (Sandbox Code Playgroud)
错误消失了,我认为他们必须更新库
@编辑
我已经从 GitHub 下载了文件 new_version 并将其粘贴到我的项目中,进行一些更改并且工作正常