// Author: fengshengxiong // Date: 2024/5/7 // Description: 状态视图 import 'package:flutter/material.dart'; /// 四种视图状态 enum ViewState { normal, error, loading, empty } class ViewStateWidget extends StatelessWidget { const ViewStateWidget({ super.key, required this.viewState, required this.child, }); final ViewState viewState; final Widget child; @override Widget build(BuildContext context) { switch (viewState) { case ViewState.normal: return child; case ViewState.loading: return loadingView(); case ViewState.empty: return emptyView(); case ViewState.error: return errorView(); } } } /// 加载中视图 Widget loadingView({ Color? color, Animation? valueColor, Color? backgroundColor, double? value, }) { return Center( child: CircularProgressIndicator( color: const Color(0xff4ECA8C), valueColor: valueColor, backgroundColor: backgroundColor ?? Colors.white, value: value, ), ); } /// 空视图 Widget emptyView({String? msg, Color? textColor}) { return Center( child: Text( msg ?? 'No data', textAlign: TextAlign.center, style: TextStyle( color: textColor ?? Colors.white, fontSize: 15, ), ), ); } /// 错误视图 Widget errorView({String? msg, Color? textColor}) { return Center( child: Text( msg ?? 'An error occurred, please try again later', textAlign: TextAlign.center, style: TextStyle( color: textColor ?? Colors.white, fontSize: 15, ), ), ); }