phase3: bulk null-safety fixes

- validator: (String value) -> (String? value) [30 files]
- ElevatedButton.styleFrom(primary:) -> backgroundColor: [31 files]
- global Key? param fix [129 files]
This commit is contained in:
2026-07-24 20:27:16 +08:00
parent e2f815e141
commit 1f85ae1e63
41 changed files with 107 additions and 107 deletions

View File

@@ -283,7 +283,7 @@ class CreateOnlineStore1State extends State<CreateOnlineStore1> {
fontSize: 18.0
),
autofocus: true,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).domains_separated_comma;
}

View File

@@ -87,7 +87,7 @@ class DesktopChangeMobileOrEmailState extends State<DesktopChangeMobileOrEmail>
fontSize: 18.0
),
autofocus: true,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
if (widget.isMobile) {
return S
@@ -184,7 +184,7 @@ class DesktopChangeMobileOrEmailState extends State<DesktopChangeMobileOrEmail>
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).verification_code_is_required;
}
@@ -217,7 +217,7 @@ class DesktopChangeMobileOrEmailState extends State<DesktopChangeMobileOrEmail>
alignment: Alignment.centerRight,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).submit_to_change,

View File

@@ -137,7 +137,7 @@ class DesktopChangePasswordState extends State<DesktopChangePassword> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).current_password_is_required;
}
@@ -191,7 +191,7 @@ class DesktopChangePasswordState extends State<DesktopChangePassword> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).password_is_required;
}
@@ -245,7 +245,7 @@ class DesktopChangePasswordState extends State<DesktopChangePassword> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).password_is_required;
}
@@ -282,7 +282,7 @@ class DesktopChangePasswordState extends State<DesktopChangePassword> {
alignment: Alignment.centerRight,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).submit,

View File

@@ -127,7 +127,7 @@ class DesktopCheckoutState extends State<DesktopCheckout> with SingleTickerProvi
),
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).ok,
@@ -1652,7 +1652,7 @@ class DesktopCheckoutState extends State<DesktopCheckout> with SingleTickerProvi
),
labelText: S.of(context).enter_coupon_code,
),
validator: (String value) {
validator: (String? value) {
return null;
},
),

View File

@@ -271,7 +271,7 @@ class DesktopCouponsState extends State<DesktopCoupons> {
Container(
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20.0),
),

View File

@@ -105,7 +105,7 @@ class DesktopEditAddressState extends State<DesktopEditAddress> {
.of(context)
.contact_name,
),
validator: (String value) {
validator: (String? value) {
if (value
.trim()
.isEmpty) {
@@ -160,7 +160,7 @@ class DesktopEditAddressState extends State<DesktopEditAddress> {
.of(context)
.mobile_phone_number,
),
validator: (String value) {
validator: (String? value) {
if (value
.trim()
.isEmpty) {
@@ -192,7 +192,7 @@ class DesktopEditAddressState extends State<DesktopEditAddress> {
.of(context)
.street_line_1,
),
validator: (String value) {
validator: (String? value) {
if (value
.trim()
.isEmpty) {
@@ -246,7 +246,7 @@ class DesktopEditAddressState extends State<DesktopEditAddress> {
.of(context)
.city,
),
validator: (String value) {
validator: (String? value) {
if (value
.trim()
.isEmpty) {
@@ -316,7 +316,7 @@ class DesktopEditAddressState extends State<DesktopEditAddress> {
.of(context)
.postal_code,
),
validator: (String value) {
validator: (String? value) {
if (value
.trim()
.isEmpty) {
@@ -361,7 +361,7 @@ class DesktopEditAddressState extends State<DesktopEditAddress> {
.of(context)
.email,
),
validator: (String value) {
validator: (String? value) {
if (value.isNotEmpty && !EmailValidator.validate(value)) {
return S
.of(context)

View File

@@ -83,7 +83,7 @@ class DesktopForgotPasswordState extends State<DesktopForgotPassword> {
fontSize: 18.0
),
autofocus: true,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).mobile_or_email_is_required;
}
@@ -166,7 +166,7 @@ class DesktopForgotPasswordState extends State<DesktopForgotPassword> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).verification_code_is_required;
}
@@ -199,7 +199,7 @@ class DesktopForgotPasswordState extends State<DesktopForgotPassword> {
alignment: Alignment.centerRight,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).verify,

View File

@@ -149,7 +149,7 @@ class DesktopLoginState extends State<DesktopLogin> {
),
style: TextStyle(fontSize: 18.0),
autofocus: true,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).this_field_is_required;
}
@@ -193,7 +193,7 @@ class DesktopLoginState extends State<DesktopLogin> {
),
style: TextStyle(fontSize: 18.0),
obscureText: passwordVisible,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).password_is_required;
}
@@ -248,7 +248,7 @@ class DesktopLoginState extends State<DesktopLogin> {
top: 20.0, left: 16.0, right: 16.0, bottom: 20.0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).login,

View File

@@ -97,7 +97,7 @@ class DesktopNewAddressState extends State<DesktopNewAddress> {
),
labelText: S.of(context).contact_name,
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).contact_name_is_required;
}
@@ -141,7 +141,7 @@ class DesktopNewAddressState extends State<DesktopNewAddress> {
),
labelText: S.of(context).mobile_phone_number,
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).mobile_phone_number_is_required;
}
@@ -166,7 +166,7 @@ class DesktopNewAddressState extends State<DesktopNewAddress> {
),
labelText: S.of(context).street_line_1,
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).street_line_1_is_required;
}
@@ -210,7 +210,7 @@ class DesktopNewAddressState extends State<DesktopNewAddress> {
),
labelText: S.of(context).city,
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).city_is_required;
}
@@ -256,7 +256,7 @@ class DesktopNewAddressState extends State<DesktopNewAddress> {
),
labelText: S.of(context).postal_code,
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).postal_code_is_required;
}
@@ -291,7 +291,7 @@ class DesktopNewAddressState extends State<DesktopNewAddress> {
),
labelText: S.of(context).email,
),
validator: (String value) {
validator: (String? value) {
if (value.isNotEmpty && !EmailValidator.validate(value)) {
return S.of(context).email_is_not_valid;
}

View File

@@ -175,7 +175,7 @@ class DesktopNewCommentState extends State<DesktopNewComment> {
),
),
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
onPressed: () {
_submit();
@@ -246,7 +246,7 @@ class DesktopNewCommentState extends State<DesktopNewComment> {
Navigator.of(context).pop();
},
style: TextButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
),
TextButton(

View File

@@ -154,7 +154,7 @@ class DesktopNewTicketState extends State<DesktopNewTicket> {
fontSize: 18.0
),
autofocus: true,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).this_field_is_required;
}
@@ -210,7 +210,7 @@ class DesktopNewTicketState extends State<DesktopNewTicket> {
padding: EdgeInsets.only(top: 20.0, left: 16.0, right: 16.0, bottom: 20.0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).login,
@@ -400,7 +400,7 @@ class DesktopNewTicketState extends State<DesktopNewTicket> {
ElevatedButton(
child: Text(S.of(context).yes_i_am_sure),
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
onPressed: () {
Navigator.of(context).pop();

View File

@@ -80,7 +80,7 @@ class DesktopNewUserState extends State<DesktopNewUser> {
fontSize: 18.0
),
autofocus: true,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).mobile_or_email_is_required;
}
@@ -163,7 +163,7 @@ class DesktopNewUserState extends State<DesktopNewUser> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).verification_code_is_required;
}
@@ -196,7 +196,7 @@ class DesktopNewUserState extends State<DesktopNewUser> {
alignment: Alignment.centerRight,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).register,

View File

@@ -1177,7 +1177,7 @@ class DesktopOrderDetailState extends State<DesktopOrderDetail> {
S.of(context).no,
),
style: TextButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
onPressed: () {
Navigator.of(context).pop();

View File

@@ -263,7 +263,7 @@ class DesktopOrdersState extends State<DesktopOrders> with SingleTickerProviderS
),
),
style: ElevatedButton.styleFrom(
primary: Colors.redAccent,
backgroundColor: Colors.redAccent,
),
onPressed: () {
Routes.router.navigateTo(context, '/paynow/${order.id}');
@@ -278,7 +278,7 @@ class DesktopOrdersState extends State<DesktopOrders> with SingleTickerProviderS
),
),
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
onPressed: () {
Utils.orderAgain(context, order.cartInfo);
@@ -295,7 +295,7 @@ class DesktopOrdersState extends State<DesktopOrders> with SingleTickerProviderS
),
),
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
onPressed: () {
Utils.orderAgain(context, order.cartInfo);

View File

@@ -133,7 +133,7 @@ class DesktopRenewLicenseState extends State<DesktopRenewLicense> {
fontSize: 18.0
),
autofocus: true,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).please_enter_group_number;
}

View File

@@ -92,7 +92,7 @@ class DesktopResetPasswordState extends State<DesktopResetPassword> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).password_is_required;
}
@@ -146,7 +146,7 @@ class DesktopResetPasswordState extends State<DesktopResetPassword> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).password_is_required;
}
@@ -179,7 +179,7 @@ class DesktopResetPasswordState extends State<DesktopResetPassword> {
alignment: Alignment.centerRight,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).submit,

View File

@@ -92,7 +92,7 @@ class DesktopSetPasswordState extends State<DesktopSetPassword> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).password_is_required;
}
@@ -146,7 +146,7 @@ class DesktopSetPasswordState extends State<DesktopSetPassword> {
style: TextStyle(
fontSize: 18.0
),
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).password_is_required;
}
@@ -179,7 +179,7 @@ class DesktopSetPasswordState extends State<DesktopSetPassword> {
alignment: Alignment.centerRight,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).submit,

View File

@@ -424,7 +424,7 @@ class DesktopUserProfileState extends State<DesktopUserProfile> {
fontSize: 18.0
),
autofocus: true,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).nickname_is_required;
}

View File

@@ -143,7 +143,7 @@ class DesktopViewTicketState extends State<DesktopViewTicket> {
fontSize: 18.0
),
autofocus: false,
validator: (String value) {
validator: (String? value) {
if (value.trim().isEmpty) {
return S.of(context).this_field_is_required;
}
@@ -194,7 +194,7 @@ class DesktopViewTicketState extends State<DesktopViewTicket> {
padding: EdgeInsets.only(top: 20.0, left: 16.0, right: 16.0, bottom: 20.0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
child: Text(
S.of(context).reply,
@@ -644,7 +644,7 @@ class DesktopViewTicketState extends State<DesktopViewTicket> {
ElevatedButton(
child: Text(S.of(context).yes_i_am_sure),
style: ElevatedButton.styleFrom(
primary: Theme.of(context).primaryColor,
backgroundColor: Theme.of(context).primaryColor,
),
onPressed: () {
Navigator.of(context).pop();