new: license dialog

This commit is contained in:
lollipopkit
2023-04-18 22:37:19 +08:00
parent f903a1da55
commit 216d64e3eb
9 changed files with 105 additions and 85 deletions

View File

@@ -30,94 +30,97 @@ import 'dart:convert';
import '/core/utils/platform.dart';
class AppUpdate {
AppUpdate({
required this.changelog,
required this.build,
required this.url,
});
AppUpdate({
required this.changelog,
required this.build,
required this.url,
});
final AppUpdatePlatformSpecific<String> changelog;
final Build build;
final AppUpdatePlatformSpecific<String> url;
final AppUpdatePlatformSpecific<String> changelog;
final Build build;
final AppUpdatePlatformSpecific<String> url;
factory AppUpdate.fromRawJson(String str) => AppUpdate.fromJson(json.decode(str));
factory AppUpdate.fromRawJson(String str) =>
AppUpdate.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
String toRawJson() => json.encode(toJson());
factory AppUpdate.fromJson(Map<String, dynamic> json) => AppUpdate(
factory AppUpdate.fromJson(Map<String, dynamic> json) => AppUpdate(
changelog: AppUpdatePlatformSpecific.fromJson(json["changelog"]),
build: Build.fromJson(json["build"]),
url: AppUpdatePlatformSpecific.fromJson(json["url"]),
);
);
Map<String, dynamic> toJson() => {
Map<String, dynamic> toJson() => {
"changelog": changelog.toJson(),
"build": build.toJson(),
"url": url.toJson(),
};
};
}
class Build {
Build({
required this.min,
required this.last,
});
Build({
required this.min,
required this.last,
});
final AppUpdatePlatformSpecific<int> min;
final AppUpdatePlatformSpecific<int> last;
final AppUpdatePlatformSpecific<int> min;
final AppUpdatePlatformSpecific<int> last;
factory Build.fromRawJson(String str) => Build.fromJson(json.decode(str));
factory Build.fromRawJson(String str) => Build.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
String toRawJson() => json.encode(toJson());
factory Build.fromJson(Map<String, dynamic> json) => Build(
factory Build.fromJson(Map<String, dynamic> json) => Build(
min: AppUpdatePlatformSpecific.fromJson(json["min"]),
last: AppUpdatePlatformSpecific.fromJson(json["last"]),
);
);
Map<String, dynamic> toJson() => {
Map<String, dynamic> toJson() => {
"min": min.toJson(),
"last": last.toJson(),
};
};
}
class AppUpdatePlatformSpecific<T> {
AppUpdatePlatformSpecific({
required this.mac,
required this.ios,
required this.android,
});
AppUpdatePlatformSpecific({
required this.mac,
required this.ios,
required this.android,
});
final T mac;
final T ios;
final T android;
final T mac;
final T ios;
final T android;
factory AppUpdatePlatformSpecific.fromRawJson(String str) => AppUpdatePlatformSpecific.fromJson(json.decode(str));
factory AppUpdatePlatformSpecific.fromRawJson(String str) =>
AppUpdatePlatformSpecific.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
String toRawJson() => json.encode(toJson());
factory AppUpdatePlatformSpecific.fromJson(Map<String, dynamic> json) => AppUpdatePlatformSpecific(
factory AppUpdatePlatformSpecific.fromJson(Map<String, dynamic> json) =>
AppUpdatePlatformSpecific(
mac: json["mac"],
ios: json["ios"],
android: json["android"],
);
);
Map<String, dynamic> toJson() => {
Map<String, dynamic> toJson() => {
"mac": mac,
"ios": ios,
"android": android,
};
};
T? get current {
switch (platform) {
case PlatformType.macos:
return mac;
case PlatformType.ios:
return ios;
case PlatformType.android:
return android;
default:
return null;
}
T? get current {
switch (platform) {
case PlatformType.macos:
return mac;
case PlatformType.ios:
return ios;
case PlatformType.android:
return android;
default:
return null;
}
}
}