diff --git a/lib/common/widgets/custom_toast.dart b/lib/common/widgets/custom_toast.dart index edc416fb8..2546455f0 100644 --- a/lib/common/widgets/custom_toast.dart +++ b/lib/common/widgets/custom_toast.dart @@ -2,7 +2,7 @@ import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; class CustomToast extends StatelessWidget { - const CustomToast({super.key, required this.msg}); + const CustomToast(this.msg, {super.key}); final String msg; @@ -12,13 +12,13 @@ class CustomToast extends StatelessWidget { Widget build(BuildContext context) { final colorScheme = ColorScheme.of(context); return Container( - margin: EdgeInsets.only( + margin: .only( bottom: MediaQuery.viewPaddingOf(context).bottom + 30, ), - padding: const EdgeInsets.symmetric(horizontal: 17, vertical: 10), + padding: const .symmetric(horizontal: 17, vertical: 10), decoration: BoxDecoration( color: colorScheme.primaryContainer.withValues(alpha: toastOpacity), - borderRadius: const BorderRadius.all(Radius.circular(20)), + borderRadius: const .all(.circular(20)), ), child: Text( msg, @@ -32,7 +32,7 @@ class CustomToast extends StatelessWidget { } class LoadingWidget extends StatelessWidget { - const LoadingWidget({super.key, required this.msg}); + const LoadingWidget(this.msg, {super.key}); ///loading msg final String msg; @@ -42,14 +42,14 @@ class LoadingWidget extends StatelessWidget { final theme = Theme.of(context); final onSurfaceVariant = theme.colorScheme.onSurfaceVariant; return Container( - padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 20), + padding: const .symmetric(horizontal: 30, vertical: 20), decoration: BoxDecoration( color: theme.dialogTheme.backgroundColor, - borderRadius: const BorderRadius.all(Radius.circular(15)), + borderRadius: const .all(.circular(15)), ), child: Column( spacing: 20, - mainAxisSize: MainAxisSize.min, + mainAxisSize: .min, children: [ //loading animation CircularProgressIndicator( @@ -63,3 +63,34 @@ class LoadingWidget extends StatelessWidget { ); } } + +class NotifyWarning extends StatelessWidget { + const NotifyWarning(this.msg, {super.key}); + + final String msg; + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final onSurfaceVariant = theme.colorScheme.onSurfaceVariant; + return Container( + decoration: BoxDecoration( + borderRadius: const .all(.circular(8)), + color: theme.dialogTheme.backgroundColor, + ), + padding: const .symmetric(horizontal: 20, vertical: 10), + child: Column( + spacing: 5, + mainAxisSize: .min, + children: [ + Icon( + Icons.warning_amber_rounded, + size: 22, + color: onSurfaceVariant, + ), + Text(msg, style: TextStyle(color: onSurfaceVariant)), + ], + ), + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index da8a6ca89..c3fe0d64f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -278,8 +278,11 @@ class MyApp extends StatelessWidget { getPages: Routes.getPages, defaultTransition: Pref.pageTransition, builder: FlutterSmartDialog.init( - toastBuilder: (msg) => CustomToast(msg: msg), - loadingBuilder: (msg) => LoadingWidget(msg: msg), + toastBuilder: CustomToast.new, + loadingBuilder: LoadingWidget.new, + notifyStyle: const FlutterSmartNotifyStyle( + warningBuilder: NotifyWarning.new, + ), builder: _builder, ), navigatorObservers: [ diff --git a/lib/utils/login_utils.dart b/lib/utils/login_utils.dart index 1ccf8c581..66ddc760c 100644 --- a/lib/utils/login_utils.dart +++ b/lib/utils/login_utils.dart @@ -67,11 +67,16 @@ abstract final class LoginUtils { } } else { // 获取用户信息失败 - await Accounts.deleteAll({account}); - SmartDialog.showNotify( - msg: '登录失败,请检查cookie是否正确,${res.toString()}', - notifyType: NotifyType.warning, - ); + final errMsg = res.toString(); + if (errMsg == '账号未登录') { + await Accounts.deleteAll({account}); + SmartDialog.showNotify( + msg: '登录失败,请检查cookie是否正确,$errMsg', + notifyType: .warning, + ); + } else { + SmartDialog.showToast(errMsg); + } } }