import 'package:flutter/material.dart'; class CommonCard extends StatelessWidget { final Widget? child; const CommonCard({super.key, this.child}); @override Widget build(BuildContext context) { final colors = Theme.of(context).colorScheme; return Container( decoration: BoxDecoration( color: colors.surfaceContainer, borderRadius: BorderRadius.circular(12), ), padding: const EdgeInsets.all(16), child: child, ); } } class CircleIconButton extends StatelessWidget { final IconData icon; final VoidCallback onPressed; const CircleIconButton( {super.key, required this.icon, required this.onPressed}); @override Widget build(BuildContext context) { final colors = Theme.of(context).colorScheme; return ElevatedButton( onPressed: onPressed, style: ElevatedButton.styleFrom( shape: CircleBorder(), elevation: 0, backgroundColor: colors.primary, padding: EdgeInsets.zero, minimumSize: const Size(0, 0), ), child: Icon(icon, color: Colors.white), ); } } Widget buildErrorInfo({ required String errorInfo, required VoidCallback onPressed, }) { return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('加载失败: $errorInfo'), ElevatedButton(onPressed: onPressed, child: Text('重试')), ], ), ); } Widget buildLoadingIndicator() { return Center(child: CircularProgressIndicator()); } Widget buildEmptyData() { return Center( child: Text('暂无数据', style: TextStyle(fontSize: 16, color: Colors.grey)), ); }