123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- import 'package:flutter/material.dart';
- import 'package:flutter_habit/common/I18N.dart';
- import 'package:flutter_habit/provider/UserProvider.dart';
- import 'package:provider/provider.dart';
- import 'SliderConfirm.dart';
- import 'UserInfoPopMenuContext.dart';
- class PopMenus {
- static Future<void> confirm({
- required BuildContext context,
- Widget? content,
- required Function function,
- }) async {
- await baseAlertMenu<int>(
- context: context,
- content: content ?? Text(I18N.of("继续该操作吗?")),
- actions: [
- TextButton(
- child: Text(I18N.of("取消")),
- onPressed: () {
- Navigator.of(context).pop(0);
- },
- ),
- TextButton(
- child: Text(I18N.of("确定")),
- onPressed: () {
- Navigator.of(context).pop(1);
- },
- ),
- ],
- ).then<int>((value) {
- if (value == 1) {
- function();
- }
- return value!;
- });
- }
- static Future<void> sliderConfirm({
- required BuildContext context,
- Widget? content,
- required Function function,
- }) async {
- await baseMenu<int>(
- context: context,
- children: <Widget>[
- Padding(
- padding: EdgeInsets.all(24),
- child: DefaultTextStyle(
- style: Theme.of(context).textTheme.titleLarge!,
- child: content ?? Text(I18N.of("继续该操作吗?")),
- ),
- ),
- Padding(
- padding: EdgeInsets.only(left: 15, right: 15, bottom: 15),
- child: SliderConfirm(
- function: () => Navigator.of(context).pop(1),
- ),
- ),
- ],
- contentPadding: EdgeInsets.all(0),
- ).then<int>((value) {
- if (value == 1) {
- function();
- }
- return value!;
- });
- }
- static Future<void> attention({
- required BuildContext context,
- Widget? content,
- }) async {
- await baseAlertMenu(
- context: context,
- content: content,
- );
- }
- static Future<T?> baseAlertMenu<T>({
- required BuildContext context,
- Widget? title,
- Widget? content,
- List<Widget>? actions,
- }) async {
- return await showDialog(
- context: context,
- builder: (context) => AlertDialog(
- title: title ?? Text(I18N.of("注意")),
- content: content ?? Text(I18N.of("注意")),
- actions: actions ??
- <Widget>[
- TextButton(
- child: Text(I18N.of("确定")),
- onPressed: () {
- Navigator.of(context).pop();
- },
- ),
- ],
- ),
- );
- }
- static Future<T?> baseMenu<T>({
- required BuildContext context,
- Widget? title,
- List<Widget>? children,
- EdgeInsetsGeometry? contentPadding,
- }) async {
- return await showDialog(
- context: context,
- builder: (context) => SimpleDialog(
- title: title ?? Text(I18N.of("注意")),
- children: children ?? [Text(I18N.of("注意"))],
- contentPadding:
- contentPadding ?? EdgeInsets.fromLTRB(0.0, 12.0, 0.0, 16.0),
- ),
- );
- }
- static Future<String> datePicker({
- required BuildContext context,
- }) async {
- return await showDatePicker(
- context: context,
- initialDate: DateTime.now().subtract(Duration(days: 3650)),
- firstDate: DateTime.now().subtract(Duration(days: 36500)),
- lastDate: DateTime.now(),
- initialDatePickerMode: DatePickerMode.year,
- ).then((onValue) {
- if (onValue != null) {
- return onValue.toIso8601String().toString();
- }
- return null;
- });
- }
- static Future<String?> userInfo({
- required BuildContext context,
- required int? uid,
- }) async {
- return await baseMenu(
- context: context,
- title: Text(I18N.of("信息")),
- children: <Widget>[
- UserInfoPopMenuContext(uid),
- ],
- contentPadding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 10),
- );
- }
- static Future<void> ban(BuildContext context) async {
- await baseMenu(
- context: context,
- contentPadding: EdgeInsets.all(16),
- children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: <Widget>[
- Icon(
- Icons.warning,
- size: 80,
- color: Theme.of(context).unselectedWidgetColor,
- ),
- Container(),
- Container(
- child: Text(
- I18N.of("您的账号由于存在恶意刷金币行为已被系统限制金币获取"),
- maxLines: 3,
- ),
- width: 200,
- ),
- ],
- ),
- ],
- );
- }
- static Future<void> coinAdd({
- required BuildContext context,
- required int addedCoins,
- }) async {
- await baseMenu(
- context: context,
- title: Text(I18N.of("打卡成功")),
- children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.center,
- crossAxisAlignment: CrossAxisAlignment.end,
- children: <Widget>[
- Icon(
- Icons.monetization_on,
- size: 80,
- color: Theme.of(context).colorScheme.secondary,
- ),
- Text(
- " + ",
- style: TextStyle(
- fontSize: 40,
- ),
- ),
- Text(
- " ${addedCoins.toString()} ",
- style: TextStyle(
- fontSize: 60,
- color: Theme.of(context).colorScheme.secondary,
- ),
- ),
- ],
- ),
- Container(height: 10,),
- Center(
- child: Text(
- "${Provider.of<UserProvider>(context, listen: false).coins} -> ${Provider.of<UserProvider>(context, listen: false).coins! + addedCoins}",
- style: TextStyle(
- color: Theme.of(context).unselectedWidgetColor,
- ),
- ),
- ),
- ],
- );
- }
- }
|