| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import 'package:flutter/material.dart';
- import 'package:tdesign_flutter/tdesign_flutter.dart';
- import '../../core/theme/app_colors_extension.dart';
- import '../../core/i18n/app_localizations.dart';
- /// 提交中 loading 弹窗。
- ///
- /// 方形卡片,上方菊花动画,下方文字。
- /// 使用方式:
- /// ```dart
- /// SubmittingDialog.show(context);
- /// // ... 异步操作 ...
- /// SubmittingDialog.hide(context);
- /// ```
- class SubmittingDialog {
- SubmittingDialog._();
- /// 显示提交中弹窗。返回按钮可关闭(关闭后 API 请求仍在进行)。
- static void show(BuildContext context) {
- showDialog(
- context: context,
- barrierDismissible: false,
- builder: (_) => _SubmittingContent(),
- );
- }
- /// 关闭提交中弹窗。即使弹窗已被返回键关闭也不会抛异常。
- static void hide(BuildContext context) {
- Navigator.of(context).maybePop();
- }
- }
- class _SubmittingContent extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- final l10n = AppLocalizations.of(context);
- final colors = Theme.of(context).extension<AppColorsExtension>()!;
- return Center(
- child: Container(
- width: 120,
- padding: const EdgeInsets.fromLTRB(24, 28, 24, 24),
- decoration: BoxDecoration(
- color: colors.bgCard,
- borderRadius: BorderRadius.circular(12),
- ),
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- const TDLoading(
- size: TDLoadingSize.large,
- icon: TDLoadingIcon.activity,
- ),
- const SizedBox(height: 16),
- Text(
- l10n.get('submitting'),
- style: TextStyle(
- fontSize: 14,
- fontWeight: FontWeight.w500,
- color: colors.textSecondary,
- ),
- ),
- ],
- ),
- ),
- );
- }
- }
|