Files
DMZJ_F/lib/widgets/status/app_error_widget.dart
2026-03-07 17:24:59 +08:00

64 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_dmzj/app/app_style.dart';
import 'package:flutter_dmzj/app/utils.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:lottie/lottie.dart';
class AppErrorWidget extends StatelessWidget {
final Function()? onRefresh;
final String errorMsg;
final Error? error;
const AppErrorWidget(
{this.errorMsg = "", this.onRefresh, this.error, Key? key})
: super(key: key);
@override
Widget build(BuildContext context) {
return Center(
child: GestureDetector(
onTap: () {
onRefresh?.call();
},
child: Padding(
padding: AppStyle.edgeInsetsA12,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
LottieBuilder.asset(
'assets/lotties/error.json',
width: 260,
repeat: false,
),
Text(
"$errorMsg\r\n点击刷新",
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 12, color: Colors.grey),
),
Visibility(
visible: error != null,
child: Padding(
padding: AppStyle.edgeInsetsT12,
child: OutlinedButton(
style: OutlinedButton.styleFrom(
textStyle: Get.textTheme.bodySmall,
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
),
onPressed: () {
Utils.copyText(
"$errorMsg\n${error?.stackTrace?.toString()}");
SmartDialog.showToast("已复制详细信息");
},
child: const Text("复制详细信息"),
),
),
),
],
),
),
),
);
}
}