new: win/linux update

This commit is contained in:
lollipopkit
2023-10-14 19:14:21 +08:00
parent 43506e19f1
commit 533e32abac
2 changed files with 22 additions and 14 deletions

View File

@@ -3,7 +3,6 @@ import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:r_upgrade/r_upgrade.dart';
import 'package:toolbox/core/extension/context/common.dart';
import 'package:toolbox/core/extension/context/dialog.dart';
import 'package:toolbox/core/extension/context/locale.dart';
import 'package:toolbox/core/extension/context/snackbar.dart';
@@ -78,25 +77,18 @@ Future<void> doUpdate(BuildContext context, {bool force = false}) async {
Future<void> _doUpdate(AppUpdate update, BuildContext context) async {
final url = update.url.current;
if (url == null) return;
if (url == null) {
Loggers.app.warning('Update url not is null');
return;
}
if (isAndroid) {
final fileName = url.split('/').last;
await RUpgrade.upgrade(url, fileName: fileName);
} else if (isIOS) {
await RUpgrade.upgradeFromAppStore('1586449703');
} else if (isMacOS) {
await openUrl(url);
} else {
context.showRoundDialog(
child: Text(l10n.platformNotSupportUpdate),
actions: [
TextButton(
onPressed: () => context.pop(),
child: Text(l10n.ok),
)
],
);
await openUrl(url);
}
}

View File

@@ -87,11 +87,15 @@ class AppUpdatePlatformSpecific<T> {
required this.mac,
required this.ios,
required this.android,
required this.windows,
required this.linux,
});
final T mac;
final T ios;
final T android;
final T windows;
final T linux;
factory AppUpdatePlatformSpecific.fromRawJson(String str) =>
AppUpdatePlatformSpecific.fromJson(json.decode(str));
@@ -103,12 +107,16 @@ class AppUpdatePlatformSpecific<T> {
mac: json["mac"],
ios: json["ios"],
android: json["android"],
windows: json["windows"],
linux: json["linux"],
);
Map<String, dynamic> toJson() => {
"mac": mac,
"ios": ios,
"android": android,
"windows": windows,
"linux": linux,
};
T? get current {
@@ -119,7 +127,15 @@ class AppUpdatePlatformSpecific<T> {
return ios;
case OS.android:
return android;
default:
case OS.windows:
return windows;
case OS.linux:
return linux;
/// Not implemented yet.
case OS.web:
case OS.fuchsia:
case OS.unknown:
return null;
}
}