Skip to content

Commit

Permalink
UpdateChecker
Browse files Browse the repository at this point in the history
  • Loading branch information
jing332 committed Jan 16, 2024
1 parent a7d99e0 commit 3412fd2
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 26 deletions.
21 changes: 2 additions & 19 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import 'package:alist_flutter/pages/app_update_dialog.dart';
import 'package:alist_flutter/pages/settings/settings.dart';
import 'package:alist_flutter/pages/web/web.dart';
import 'package:alist_flutter/router.dart';
import 'package:alist_flutter/utils/UpdateChecker.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
Expand Down Expand Up @@ -81,26 +80,10 @@ class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();

WidgetsBinding.instance.addPostFrameCallback((_) async {
final checker = UpdateChecker(owner: "jing332", repo: "AListFlutter");
await checker.downloadData();
final hasNewVersion = await checker.hasNewVersion();
if (hasNewVersion) {
showDialog(
context: context,
barrierDismissible: false,
barrierColor: Colors.black.withOpacity(0.5),
builder: (context) {
return AppUpdateDialog(
content: checker.getUpdateContent(),
apkUrl: checker.getApkDownloadUrl(),
htmlUrl: checker.getHtmlUrl(),
version: checker.getTag(),
);
});
}
AppUpdateDialog.checkUpdateAndShowDialog(context, null);
});

}

@override
Expand Down
49 changes: 45 additions & 4 deletions lib/pages/alist/alist.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import 'package:alist_flutter/generated_api.dart';
import 'package:alist_flutter/pages/alist/pwd_edit_dialog.dart';
import 'package:alist_flutter/pages/app_update_dialog.dart';
import 'package:alist_flutter/widgets/switch_floating_action_button.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../../utils/UpdateChecker.dart';
import '../../utils/intent_utils.dart';
import 'log_list_view.dart';

class AListScreen extends StatelessWidget {
Expand All @@ -19,12 +22,14 @@ class AListScreen extends StatelessWidget {
title: Obx(() => Text("AList - ${ui.alistVersion.value}")),
actions: [
IconButton(
tooltip: "桌面快捷方式",
onPressed: () {
Android().addShortcut();
},
icon: const Icon(Icons.add_home),
),
IconButton(
tooltip: "修改 admin 密码",
onPressed: () {
showDialog(
context: context,
Expand All @@ -38,15 +43,51 @@ class AListScreen extends StatelessWidget {
icon: const Icon(Icons.password),
),
PopupMenuButton(
tooltip: "更多选项",
itemBuilder: (context) {
return [
const PopupMenuItem(
PopupMenuItem(
value: 1,
child: Text("检查更新"),
onTap: () async {
AppUpdateDialog.checkUpdateAndShowDialog(context, (b) {
if (!b) {
Get.showSnackbar(GetSnackBar(
message: "已经是最新版本",
duration: const Duration(seconds: 2)));
}
});
},
child: const Text("检查更新"),
),
const PopupMenuItem(
PopupMenuItem(
value: 2,
child: Text("关于"),
onTap: () {
Android().getVersionName().then((verName) {
showAboutDialog(
context: context,
applicationVersion: verName,
applicationName: "AList",
children: [
TextButton(
onPressed: () {
IntentUtils.getUrlIntent(
"https://github.com/jing332/AListFlutter")
.launchChooser("AListFlutter");
},
child: const Text("AListFlutter")),
TextButton(
onPressed: () {
Android().getAListVersion().then((ver) {
IntentUtils.getUrlIntent(
"https://github.com/alist-org/alist/releases/tag/$ver")
.launchChooser("AList");
});
},
child: const Text("AList")),
]);
});
},
child: const Text("关于"),
),
];
},
Expand Down
4 changes: 2 additions & 2 deletions lib/pages/alist/log_list_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ class _LogListViewState extends State<LogListView> {
final log = widget.logs[index];
return ListTile(
dense: true,
title: Text(log.content),
subtitle: Text(log.time),
title: SelectableText(log.content),
subtitle: SelectableText(log.time),
leading: LogLevelView(level: log.level),
);
},
Expand Down
25 changes: 24 additions & 1 deletion lib/pages/app_update_dialog.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';

import '../utils/UpdateChecker.dart';
import '../utils/intent_utils.dart';

class AppUpdateDialog extends StatelessWidget {
Expand All @@ -15,6 +16,29 @@ class AppUpdateDialog extends StatelessWidget {
required this.version,
required this.htmlUrl});

static checkUpdateAndShowDialog(
BuildContext context, ValueChanged<bool> ? checkFinished ) async {
final checker = UpdateChecker(owner: "jing332", repo: "AListFlutter");
await checker.downloadData();
checker.hasNewVersion().then((value) {
checkFinished?.call(value);
if (value) {
showDialog(
context: context,
barrierDismissible: false,
barrierColor: Colors.black.withOpacity(0.5),
builder: (context) {
return AppUpdateDialog(
content: checker.getUpdateContent(),
apkUrl: checker.getApkDownloadUrl(),
htmlUrl: checker.getHtmlUrl(),
version: checker.getTag(),
);
});
}
});
}

@override
Widget build(BuildContext context) {
return AlertDialog(
Expand Down Expand Up @@ -42,7 +66,6 @@ class AppUpdateDialog extends StatelessWidget {
onPressed: () {
Navigator.pop(context);
IntentUtils.getUrlIntent(apkUrl).launchChooser("下载APK");

},
),
],
Expand Down

0 comments on commit 3412fd2

Please sign in to comment.