Skip to content

Commit

Permalink
feat: 网页首页
Browse files Browse the repository at this point in the history
  • Loading branch information
jing332 committed Jan 16, 2024
1 parent 69e00b3 commit 8b4d3a1
Show file tree
Hide file tree
Showing 12 changed files with 171 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,11 @@ public interface AppConfig {

void setAutoCheckUpdateEnabled(@NonNull Boolean enabled);

@NonNull
Boolean isAutoOpenWebPageEnabled();

void setAutoOpenWebPageEnabled(@NonNull Boolean enabled);

/** The codec used by AppConfig. */
static @NonNull MessageCodec<Object> getCodec() {
return new StandardMessageCodec();
Expand Down Expand Up @@ -238,6 +243,52 @@ static void setUp(@NonNull BinaryMessenger binaryMessenger, @Nullable AppConfig
api.setAutoCheckUpdateEnabled(enabledArg);
wrapped.add(0, null);
}
catch (Throwable exception) {
ArrayList<Object> wrappedError = wrapError(exception);
wrapped = wrappedError;
}
reply.reply(wrapped);
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger, "dev.flutter.pigeon.alist_flutter.AppConfig.isAutoOpenWebPageEnabled", getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList<Object> wrapped = new ArrayList<Object>();
try {
Boolean output = api.isAutoOpenWebPageEnabled();
wrapped.add(0, output);
}
catch (Throwable exception) {
ArrayList<Object> wrappedError = wrapError(exception);
wrapped = wrappedError;
}
reply.reply(wrapped);
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger, "dev.flutter.pigeon.alist_flutter.AppConfig.setAutoOpenWebPageEnabled", getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList<Object> wrapped = new ArrayList<Object>();
ArrayList<Object> args = (ArrayList<Object>) message;
Boolean enabledArg = (Boolean) args.get(0);
try {
api.setAutoOpenWebPageEnabled(enabledArg);
wrapped.add(0, null);
}
catch (Throwable exception) {
ArrayList<Object> wrappedError = wrapError(exception);
wrapped = wrappedError;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ object AppConfigBridge : GeneratedApi.AppConfig {
override fun isStartAtBootEnabled() = AppConfig.isStartAtBootEnabled

override fun isAutoCheckUpdateEnabled() = AppConfig.isAutoCheckUpdateEnabled
override fun isAutoOpenWebPageEnabled() = AppConfig.isAutoOpenWebPageEnabled

override fun setAutoOpenWebPageEnabled(enabled: Boolean) {
AppConfig.isAutoOpenWebPageEnabled = enabled
}

override fun setAutoCheckUpdateEnabled(enabled: Boolean) {
AppConfig.isAutoCheckUpdateEnabled = enabled
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,9 @@ object AppConfig {
fallback = false
)

var isAutoOpenWebPageEnabled: Boolean by prefs.dynamic(
"isAutoOpenWebPageEnabled",
fallback = false
)

}
3 changes: 3 additions & 0 deletions lib/generated/intl/messages_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Auto check for updates"),
"autoCheckForUpdatesDesc": MessageLookupByLibrary.simpleMessage(
"Check for updates when app starts"),
"autoStartWebPage": MessageLookupByLibrary.simpleMessage("将网页设置为打开首页"),
"autoStartWebPageDesc":
MessageLookupByLibrary.simpleMessage("打开主界面时的首页"),
"bootAutoStartService":
MessageLookupByLibrary.simpleMessage("Boot auto-start service"),
"bootAutoStartServiceDesc": MessageLookupByLibrary.simpleMessage(
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/intl/messages_zh.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ class MessageLookup extends MessageLookupByLibrary {
"autoCheckForUpdates": MessageLookupByLibrary.simpleMessage("自动检查更新"),
"autoCheckForUpdatesDesc":
MessageLookupByLibrary.simpleMessage("启动时自动检查更新"),
"autoStartWebPage": MessageLookupByLibrary.simpleMessage("将网页设置为打开首页"),
"autoStartWebPageDesc":
MessageLookupByLibrary.simpleMessage("打开主界面时的首页"),
"bootAutoStartService": MessageLookupByLibrary.simpleMessage("开机自启动服务"),
"bootAutoStartServiceDesc": MessageLookupByLibrary.simpleMessage(
"在开机后自动启动AList服务。(请确保授予自启动权限)"),
Expand Down
20 changes: 20 additions & 0 deletions lib/generated/l10n.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

49 changes: 49 additions & 0 deletions lib/generated_api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,55 @@ class AppConfig {
return;
}
}

Future<bool> isAutoOpenWebPageEnabled() async {
const String __pigeon_channelName = 'dev.flutter.pigeon.alist_flutter.AppConfig.isAutoOpenWebPageEnabled';
final BasicMessageChannel<Object?> __pigeon_channel = BasicMessageChannel<Object?>(
__pigeon_channelName,
pigeonChannelCodec,
binaryMessenger: __pigeon_binaryMessenger,
);
final List<Object?>? __pigeon_replyList =
await __pigeon_channel.send(null) as List<Object?>?;
if (__pigeon_replyList == null) {
throw _createConnectionError(__pigeon_channelName);
} else if (__pigeon_replyList.length > 1) {
throw PlatformException(
code: __pigeon_replyList[0]! as String,
message: __pigeon_replyList[1] as String?,
details: __pigeon_replyList[2],
);
} else if (__pigeon_replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (__pigeon_replyList[0] as bool?)!;
}
}

Future<void> setAutoOpenWebPageEnabled(bool enabled) async {
const String __pigeon_channelName = 'dev.flutter.pigeon.alist_flutter.AppConfig.setAutoOpenWebPageEnabled';
final BasicMessageChannel<Object?> __pigeon_channel = BasicMessageChannel<Object?>(
__pigeon_channelName,
pigeonChannelCodec,
binaryMessenger: __pigeon_binaryMessenger,
);
final List<Object?>? __pigeon_replyList =
await __pigeon_channel.send(<Object?>[enabled]) as List<Object?>?;
if (__pigeon_replyList == null) {
throw _createConnectionError(__pigeon_channelName);
} else if (__pigeon_replyList.length > 1) {
throw PlatformException(
code: __pigeon_replyList[0]! as String,
message: __pigeon_replyList[1] as String?,
details: __pigeon_replyList[2],
);
} else {
return;
}
}
}

class Android {
Expand Down
4 changes: 3 additions & 1 deletion lib/l10n/intl_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,7 @@
"grantStoragePermissionDesc": "Mounting local storage is a must, otherwise no permission to read and write files",
"grantStoragePermission": "Grant 【external storage】 permission",
"grantNotificationPermission": "Grant 【Notification】 permission",
"grantNotificationPermissionDesc": "Used for foreground service keep alive"
"grantNotificationPermissionDesc": "Used for foreground service keep alive",
"autoStartWebPage": "将网页设置为打开首页",
"autoStartWebPageDesc": "打开主界面时的首页"
}
4 changes: 3 additions & 1 deletion lib/l10n/intl_zh.arb
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,7 @@
"grantStoragePermissionDesc": "挂载本地存储时必须授予,否则无权限读写文件",
"grantStoragePermission": "申请【读写外置存储权限】",
"grantNotificationPermission": "申请【通知权限】",
"grantNotificationPermissionDesc": "用于前台服务保活"
"grantNotificationPermissionDesc": "用于前台服务保活",
"autoStartWebPage": "将网页设置为打开首页",
"autoStartWebPageDesc": "打开主界面时的首页"
}
17 changes: 5 additions & 12 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,17 @@ class MyHomePage extends StatefulWidget {
}

class _MyHomePageState extends State<MyHomePage> {
int _selectedIndex = 0;
int _selectedIndex = 1;
final PageController _pageController = PageController();


@override
void initState() {
super.initState();

AppConfig().isAutoOpenWebPageEnabled().then((value) => setState(() {
_selectedIndex = 1;
}));

WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
if (await AppConfig().isAutoCheckUpdateEnabled()) {
AppUpdateDialog.checkUpdateAndShowDialog(context, null);
Expand Down Expand Up @@ -146,13 +149,3 @@ class _MyHomePageState extends State<MyHomePage> {
);
}
}

class NavigationBarController extends GetxController {
final _selectedIndex = 0.obs;

int get selectedIndex => _selectedIndex.value;

void setIndex(int index) {
_selectedIndex.value = index;
}
}
20 changes: 20 additions & 0 deletions lib/pages/settings/settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,16 @@ class _SettingsScreenState extends State<SettingsScreen> {
controller.startAtBoot = value;
},
),
// AutoStartWebPage
SwitchPreference(
title: S.of(context).autoStartWebPage,
subtitle: S.of(context).autoStartWebPageDesc,
icon: const Icon(Icons.open_in_browser),
value: controller._autoStartWebPage.value,
onChanged: (value) {
controller.autoStartWebPage = value;
},
),
],
),
));
Expand Down Expand Up @@ -140,6 +150,15 @@ class SettingsController extends GetxController {

get startAtBoot => _autoStart.value;


final _autoStartWebPage = false.obs;

set autoStartWebPage(value) =>
{_autoStartWebPage.value = value, AppConfig().setAutoOpenWebPageEnabled(value)};

get autoStartWebPage => _autoStartWebPage.value;


@override
void onInit() async {
log("onInit");
Expand All @@ -153,6 +172,7 @@ class SettingsController extends GetxController {
cfg.isAutoCheckUpdateEnabled().then((value) => autoUpdate = value);
cfg.isWakeLockEnabled().then((value) => wakeLock = value);
cfg.isStartAtBootEnabled().then((value) => startAtBoot = value);
cfg.isAutoOpenWebPageEnabled().then((value) => autoStartWebPage = value);

final sdk = await Android().getDeviceSdkInt();
// A11
Expand Down
4 changes: 4 additions & 0 deletions pigeons/pigeon.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ abstract class AppConfig {
bool isAutoCheckUpdateEnabled();

void setAutoCheckUpdateEnabled(bool enabled);

bool isAutoOpenWebPageEnabled();

void setAutoOpenWebPageEnabled(bool enabled);
}

@HostApi()
Expand Down

0 comments on commit 8b4d3a1

Please sign in to comment.