登录流程已全部重构

This commit is contained in:
zhutao
2025-09-23 11:47:29 +08:00
parent a4992a063b
commit 8988b3feea
71 changed files with 2036 additions and 901 deletions

View File

@@ -0,0 +1,75 @@
import 'package:flutter/material.dart';
import '../utils/enums/ui_theme.dart';
import '../utils/enums/ui_variant.dart';
import '../utils/theme/ui_color.dart';
class AppButton extends StatelessWidget {
final Widget child;
final VoidCallback? onPressed;
final UiThemeType type;
final UiVariant variant;
final bool loading;
final bool round;
final bool disabled;
const AppButton({
super.key,
required this.child,
this.onPressed,
this.type = UiThemeType.primary,
this.variant = UiVariant.solid,
this.loading = false,
this.round = true,
this.disabled = false,
});
@override
Widget build(BuildContext context) {
//设置颜色
final scheme = UiColor.getColorScheme(
context,
type: type,
variant: variant,
);
return Opacity(
opacity: disabled ? 0.5 : 1,
child: ElevatedButton(
onPressed: () {
if (!loading && !disabled) {
onPressed?.call();
}
},
style: ElevatedButton.styleFrom(
backgroundColor: scheme.background,
// 应用自定义颜色
shadowColor: Colors.transparent,
foregroundColor: scheme.foreground,
shape: round
? const StadiumBorder()
: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 8,
children: [
Visibility(
visible: loading,
child: SizedBox.square(
dimension: 15,
child: CircularProgressIndicator(
color: scheme.foreground,
strokeWidth: 2,
),
),
),
child,
],
),
),
);
}
}

View File

@@ -1,84 +0,0 @@
import 'package:flutter/material.dart';
///自定义按钮
///包括loading功能
class CustomButton extends StatelessWidget {
final Widget child;
final VoidCallback? onPressed;
final bool loading;
final bool round;
final bool disabled;
const CustomButton({
super.key,
required this.child,
this.onPressed,
this.loading = false,
this.round = true,
this.disabled = false,
});
@override
Widget build(BuildContext context) {
///自定义颜色
// switch (size) {
// case ButtonSize.small:
// height = 28;
// loadingSize = 16;
// fontSize = 12;
// padding = const EdgeInsets.symmetric(horizontal: 12);
// break;
// case ButtonSize.large:
// height = 48;
// loadingSize = 24;
// fontSize = 18;
// padding = const EdgeInsets.symmetric(horizontal: 20);
// break;
// case ButtonSize.medium:
// height = 45;
// loadingSize = 15;
// fontSize = 16;
// padding = const EdgeInsets.symmetric(horizontal: 16);
// break;
// }
void handClick() {
if (!loading && !disabled) {
onPressed?.call();
}
}
return Opacity(
opacity: disabled ? 0.5 : 1,
child: ElevatedButton(
onPressed: handClick,
style: ElevatedButton.styleFrom(
shape: round
? const StadiumBorder()
: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Visibility(
visible: loading,
child: Container(
margin: EdgeInsets.only(right: 8),
child: SizedBox.square(
dimension: 15,
child: CircularProgressIndicator(
color: Colors.white,
strokeWidth: 2,
),
),
),
),
child,
],
),
),
);
}
}