Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-06-08 11:40:03 +08:00
parent 01a1cb2dce
commit 22fc256d8a
3 changed files with 54 additions and 15 deletions

View File

@@ -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)),
],
),
);
}
}

View File

@@ -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: [

View File

@@ -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);
}
}
}