Browse Source

fix(login): 重构社交登录按钮渲染逻辑以修复间距问题

重构社交登录按钮的渲染逻辑,使用列表构建和循环渲染代替条件运算符,确保按钮间间距一致。避免在条件分支中手动添加 SizedBox 导致的间距缺失问题。
newdev_shunjiawei
lxm 7 months ago
parent
commit
412b419fac
  1. 57
      lib/modules/login/views/login_view.dart
  2. 2
      pubspec.yaml

57
lib/modules/login/views/login_view.dart

@ -446,33 +446,38 @@ class LoginView extends GetView<LoginController> {
],
),
SizedBox(height: 24.h),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (controller.isChinaMainland.value) ...[
_buildSocialButton(
FontAwesomeIcons.weixin, Colors.green, isDarkMode),
] else if (GetPlatform.isAndroid) ...[
_buildSocialButton(
FontAwesomeIcons.google, Colors.red, isDarkMode),
],
Builder(
builder: (_) {
final buttons = <Widget>[];
// Apple登录按钮(仅在iOS上显示)
if (GetPlatform.isIOS) ...[
SizedBox(width: 24.w),
_buildSocialButton(
FontAwesomeIcons.apple, Colors.black, isDarkMode),
],
// SizedBox(width: 24.w),
// _buildSocialButton(
// FontAwesomeIcons.facebook, Colors.blue, isDarkMode),
// 根据配置显示游客登录按钮
if (controller.isGuestLoginVisible) ...[
SizedBox(width: 24.w),
_buildSocialButton(FontAwesomeIcons.userSecret, Colors.black,
isDarkMode), // 游客登录按钮
],
],
if (controller.isChinaMainland.value) {
buttons.add(_buildSocialButton(
FontAwesomeIcons.weixin, Colors.green, isDarkMode));
} else if (GetPlatform.isAndroid) {
buttons.add(_buildSocialButton(
FontAwesomeIcons.google, Colors.red, isDarkMode));
}
if (GetPlatform.isIOS) {
buttons.add(_buildSocialButton(
FontAwesomeIcons.apple, Colors.black, isDarkMode));
}
if (controller.isGuestLoginVisible) {
buttons.add(_buildSocialButton(
FontAwesomeIcons.userSecret, Colors.black, isDarkMode));
}
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
for (int i = 0; i < buttons.length; i++) ...[
if (i > 0) SizedBox(width: 24.w),
buttons[i],
],
],
);
},
),
],
);

2
pubspec.yaml

@ -1,7 +1,7 @@
name: voitrans
description: "Voitrans - AI Voice Assistant."
publish_to: "none"
version: 1.0.22+72
version: 1.0.23+97
environment:
sdk: ">=3.3.0 <4.0.0"

Loading…
Cancel
Save