loading加载中组件封装
loading封装
import 'package:flutter/material.dart';
final loadingnew = LoadingNew();
class LoadingNew {
bool _isShowing = false;
void show(BuildContext context, [String message = '加载中...']) {
if (_isShowing || !context.mounted) return;
final text = message.trim().isEmpty ? '加载中...' : message.trim();
_isShowing = true;
showDialog<void>(
context: context,
barrierDismissible: false,
builder: (_) => _LoadingDialog(message: text),
).then((_) {
_isShowing = false;
});
}
void hide(BuildContext context) {
if (!_isShowing || !context.mounted) return;
Navigator.of(context, rootNavigator: true).pop();
_isShowing = false;
}
}
class _LoadingDialog extends StatelessWidget {
const _LoadingDialog({required this.message});
final String message;
@override
Widget build(BuildContext context) {
return Center(
child: Material(
color: Colors.transparent,
child: Container(
width: 120,
padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const SizedBox(
width: 28,
height: 28,
child: CircularProgressIndicator(strokeWidth: 3),
),
const SizedBox(height: 14),
Text(
message,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 14, color: Color(0xFF333333)),
),
],
),
),
),
);
}
}
本文来自博客园,作者:jialiangzai,转载请注明原文链接:https://www.cnblogs.com/zsnhweb/p/19972233

浙公网安备 33010602011771号