feat:重构模块

This commit is contained in:
2026-06-27 17:12:38 +08:00
parent a5e788eee6
commit a340ba424e
31 changed files with 919 additions and 623 deletions

View File

@@ -4,7 +4,8 @@ import 'package:flutter_common/widget/common_widget.dart';
import 'package:food_hub_app/config/app_config.dart';
import 'package:food_hub_app/models/session.dart';
import 'package:food_hub_app/widgets/common/index.dart';
import 'package:tdesign_flutter/tdesign_flutter.dart';
import 'package:liquid_glass_widgets/liquid_glass_widgets.dart';
import 'package:liquid_glass_widgets/widgets/containers/glass_card.dart';
class ProfileInfo extends StatelessWidget {
final User user;
@@ -13,19 +14,21 @@ class ProfileInfo extends StatelessWidget {
Widget _buildAvatar(BuildContext context, User user) {
if (user.avatar == null) {
return TDAvatar(
size: TDAvatarSize.large,
type: TDAvatarType.customText,
shape: TDAvatarShape.circle,
return CircleAvatar(
radius: 24,
backgroundColor: Theme.of(context).colorScheme.primary,
text: user.username.isNotEmpty ? user.username[0] : '?',
foregroundColor: Theme.of(context).colorScheme.surface,
child: Text(
user.username.isNotEmpty ? user.username[0] : '?',
style: TextStyle(fontSize: 14),
),
);
} else {
return TDAvatar(
size: TDAvatarSize.large,
type: TDAvatarType.normal,
fit: BoxFit.contain,
avatarUrl: '${AppConfig.imageBaseUrl}/${user.avatar}',
return CircleAvatar(
radius: 24,
backgroundImage: NetworkImage(
'${AppConfig.imageBaseUrl}/${user.avatar}',
),
);
}
}
@@ -41,22 +44,24 @@ class ProfileInfo extends StatelessWidget {
children: [
Icon(icon, size: 16, color: colors.primary),
const SizedBox(width: 6),
Text(text),
Text(text, style: Theme.of(context).textTheme.bodyMedium),
],
);
}
@override
Widget build(BuildContext context) {
return CommonCard(
final colors = Theme.of(context).colorScheme;
return GlassCard(
padding: EdgeInsetsGeometry.all(10),
useOwnLayer: true,
settings: LiquidGlassSettings(glassColor: colors.surface),
child: Column(
children: [
_buildAvatar(context, user),
const SizedBox(height: 8),
Text(
user.username,
style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
Text(user.username, style: Theme.of(context).textTheme.titleMedium),
const SizedBox(height: 8),
if (user.tags != null && user.tags!.isNotEmpty)
Row(