simple_app_upgrade.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vitalapp/components/alert_dialog.dart';
  4. import 'package:vitalapp/managers/interfaces/models/upgrade.dart';
  5. import 'package:vitalapp/pages/settings/center/view.dart';
  6. import 'package:vitalapp/pages/upgrade/controller.dart';
  7. class AppUpgradeWidget extends GetView<AppUpgradeController> {
  8. const AppUpgradeWidget({super.key, required this.model});
  9. final UpgradeCheckResultModel model;
  10. @override
  11. Widget build(BuildContext context) {
  12. controller.state.updating = false;
  13. controller.state.progress = 0.0;
  14. return Obx(
  15. () {
  16. var content =
  17. "当前版本:${controller.state.currentVersion},最新版本:${model.version}, \n是否更新App?";
  18. return VAlertDialog(
  19. title: controller.state.updating ? "下载新版本" : "提示",
  20. width: 400,
  21. confirmLabel: "安装",
  22. // showCancel: !model.isCoerce,
  23. content: Container(
  24. height: 80,
  25. padding: const EdgeInsets.symmetric(horizontal: 24),
  26. alignment: Alignment.center,
  27. child: Column(
  28. mainAxisAlignment: MainAxisAlignment.center,
  29. crossAxisAlignment: CrossAxisAlignment.center,
  30. children: [
  31. if (!controller.state.updating)
  32. Center(
  33. child: Text(
  34. content,
  35. softWrap: true,
  36. style: const TextStyle(fontSize: 20),
  37. ),
  38. ),
  39. if (controller.state.updating)
  40. Padding(
  41. padding: const EdgeInsets.symmetric(horizontal: 8.0),
  42. child: Column(
  43. children: [
  44. ProgressBar(
  45. progress: controller.state.progress,
  46. ),
  47. const SizedBox(
  48. height: 10,
  49. ),
  50. if (controller.state.progress != 1)
  51. const Center(child: Text("正在下载,请稍等")),
  52. if (controller.state.progress == 1)
  53. const Center(child: Text("下载完成")),
  54. ],
  55. ),
  56. ),
  57. ],
  58. ),
  59. ),
  60. onConfirm: model.isNeedUpdate
  61. ? () {
  62. if (controller.state.progress == 1) {
  63. controller.installPackage(//安装
  64. model.version);
  65. } else {
  66. //下载
  67. controller.downloadPackage(model.version, model.downloadUrl,
  68. onProgress: (progress) {
  69. controller.state.progress = progress;
  70. });
  71. controller.state.updating = true;
  72. }
  73. }
  74. : null,
  75. onCanceled: () {
  76. //取消
  77. controller.deleteFile(model.version); //删除本地安装包
  78. },
  79. );
  80. },
  81. );
  82. }
  83. }