| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- import 'dart:io';
- import 'dart:ui';
- import 'package:electronic_assistant/data/bean/version_update_bean.dart';
- import 'package:electronic_assistant/data/consts/constants.dart';
- import 'package:electronic_assistant/resource/assets.gen.dart';
- import 'package:electronic_assistant/resource/colors.gen.dart';
- import 'package:electronic_assistant/utils/common_style.dart';
- import 'package:electronic_assistant/utils/expand.dart';
- import 'package:electronic_assistant/utils/mmkv_util.dart';
- import 'package:electronic_assistant/utils/toast_util.dart';
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_screenutil/flutter_screenutil.dart';
- import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
- import '../utils/launcher_url_util.dart';
- class UpdateVersionDialog {
- static const String tag = 'showUpdateVersionDialog';
- static void dismiss() {
- SmartDialog.dismiss(tag: tag);
- }
- static Widget _buildVersionView(String version) {
- return Container(
- decoration: BoxDecoration(
- gradient: LinearGradient(
- colors: [
- '#D0C5FF'.toColor(),
- ColorName.white,
- '#647FFF'.toColor()
- ],
- begin: Alignment.topLeft,
- end: Alignment.bottomRight,
- ),
- borderRadius: BorderRadius.all(Radius.circular(11.w))),
- padding: EdgeInsets.all(0.5.w),
- height: 22.h,
- child: Container(
- decoration: getPrimaryBtnDecoration(11.w),
- padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 2.w),
- child: Text(
- version,
- style: TextStyle(
- fontSize: 13.sp,
- color: ColorName.white,
- fontWeight: FontWeight.bold,
- height: 0),
- ),
- ));
- }
- static Widget _buildUpdateBtn({VoidCallback? onUpdateClick}) {
- return GestureDetector(
- onTap: onUpdateClick,
- child: Container(
- width: 148.w,
- height: 48.w,
- decoration: BoxDecoration(
- gradient: LinearGradient(
- colors: ['#25262A'.toColor(), '#3F424D'.toColor()],
- stops: const [0.3, 1.0],
- begin: Alignment.topLeft,
- end: Alignment.bottomRight,
- ),
- borderRadius: BorderRadius.circular(100.w),
- ),
- child: Center(
- child: Text(
- '立即更新',
- style: TextStyle(
- fontSize: 14.sp,
- color: ColorName.white,
- fontWeight: FontWeight.bold),
- ),
- )),
- );
- }
- static void show(VersionUpdateBean bean) {
- if (SmartDialog.checkExist(tag: tag)) {
- return;
- }
- SmartDialog.show(
- tag: tag,
- backType: SmartBackType.block,
- clickMaskDismiss: false,
- maskColor: ColorName.black55,
- builder: (_) {
- return SizedBox(
- width: 304.w,
- child: IntrinsicHeight(
- child: Column(
- children: [
- Container(
- width: 304.w,
- decoration: BoxDecoration(
- image: DecorationImage(
- image: Assets.images.bgUpdateVersion.provider(),
- fit: BoxFit.cover,
- ),
- ),
- child: AspectRatio(
- aspectRatio: 960 / 1110,
- child: Container(
- padding: EdgeInsets.symmetric(horizontal: 42.w),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- SizedBox(height: 57.h),
- Assets.images.iconUpdateNewVersionTitle
- .image(height: 29.h),
- SizedBox(height: 8.h),
- _buildVersionView(bean.version),
- SizedBox(height: 20.h),
- Expanded(
- child:
- _buildUpdateView(bean.title, bean.desc)),
- SizedBox(height: 20.h),
- _buildUpdateBtn(onUpdateClick: () {
- onUpdate(bean.url);
- }),
- SizedBox(height: 48.h),
- ],
- ),
- )),
- ),
- SizedBox(height: 12.h),
- Visibility(
- visible: !bean.force,
- child: GestureDetector(
- onTap: () {
- KVUtil.putString(
- Constants.recordServerVersion, bean.version);
- SmartDialog.dismiss(tag: tag);
- },
- child: Assets.images.iconUpdateAppClose
- .image(width: 40.w, height: 40.w)),
- )
- ],
- ),
- ),
- );
- });
- }
- static Widget _buildUpdateView(String? title, String? desc) {
- return SingleChildScrollView(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text(
- title ?? '',
- style: TextStyle(fontSize: 14.sp, color: '#202A4D'.toColor()),
- ),
- Visibility(
- visible: title != null && title.isNotEmpty,
- child: SizedBox(
- height: 6.h,
- )),
- Text(
- desc ?? '',
- style: TextStyle(fontSize: 14.sp, color: '#202A4D'.toColor()),
- ),
- ],
- ),
- );
- }
- static void onUpdate(String? url) {
- if (Platform.isAndroid) {
- if (url == null) {
- return;
- }
- try {
- LauncherUrlUtil.launchHttpUrl(url);
- } catch (e) {
- ToastUtil.showToast('更新失败');
- }
- } else if (Platform.isIOS) {
- // ios 跳转苹果商店
- LauncherUrlUtil.launchHttpUrl(
- 'itms-apps://itunes.apple.com/us/app/apple-store/6683306440');
- }
- }
- }
|