APP_NEW/lib/Component/bottom_popup_message.dart

76 lines
2.1 KiB
Dart
Raw Normal View History

2025-03-11 21:17:14 +08:00
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:lamiter/Extension/build_context.dart';
import 'package:provider/provider.dart';
import 'package:lamiter/Provider/Language/language_provider.dart';
// enum PopupMessageType {
// serverError('伺服器異常。請稍後重試,或聯繫開發人員。', Colors.red),
// formIncompleteError('請填寫所有必填欄位。', Colors.red),
// copySuccess('複製成功!', null),
// screenshotSuccess('截圖成功!', null);
// final String message;
// final Color? color;
// const PopupMessageType(this.message, this.color);
// }
class BottomPopupMessage extends StatefulWidget {
final double height;
const BottomPopupMessage({
required super.key,
required this.height,
});
@override
State<BottomPopupMessage> createState() => BottomPopupMessageState();
}
class BottomPopupMessageState extends State<BottomPopupMessage> {
bool _enabled = false;
String _message = '';
Color _color = Colors.transparent;
void showMessage(String message, Color color) async {
_enabled = true;
_message = message;
_color = color;
setState(() {});
Future.delayed(const Duration(seconds: 3), () {
_enabled = false;
_message = '';
_color = Colors.transparent;
setState(() {});
});
}
@override
Widget build(BuildContext context) {
final languageProvider = Provider.of<LanguageProvider>(context);
return AnimatedPositioned(
bottom: _enabled ? widget.height : -60.sp,
duration: Durations.short3,
curve: Curves.easeOutSine,
child: Container(
decoration: BoxDecoration(
color: _color,
borderRadius: BorderRadius.circular(32.sp),
),
padding: EdgeInsets.symmetric(
vertical: 6.sp,
horizontal: 14.sp,
),
child: Text(
languageProvider.getLocaleString(_message),
style: context.tM!.copyWith(
color: context.surface,
fontWeight: FontWeight.bold,
),
),
),
);
}
}