Files
pilipala/lib/common/widgets/http_error.dart
2024-10-27 00:51:11 +08:00

56 lines
1.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class HttpError extends StatelessWidget {
const HttpError({
required this.errMsg,
this.fn,
this.btnText,
this.isShowBtn = true,
this.isInSliver = true,
super.key,
});
final String? errMsg;
final Function()? fn;
final String? btnText;
final bool isShowBtn;
final bool isInSliver;
@override
Widget build(BuildContext context) {
Color primary = Theme.of(context).colorScheme.primary;
final errorContent = SizedBox(
height: 400,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset("assets/images/error.svg", height: 200),
const SizedBox(height: 30),
Text(
errMsg ?? '请求异常',
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.titleSmall,
),
const SizedBox(height: 20),
if (isShowBtn)
FilledButton.tonal(
onPressed: () => fn?.call(),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith((states) {
return primary.withAlpha(20);
}),
),
child: Text(btnText ?? '点击重试', style: TextStyle(color: primary)),
),
],
),
);
if (isInSliver) {
return SliverToBoxAdapter(child: errorContent);
} else {
return Align(alignment: Alignment.topCenter, child: errorContent);
}
}
}