Commit d5a3c225 authored by impfundev's avatar impfundev

fix: refactoring custom button with loading

parent 36d06822
......@@ -226,11 +226,11 @@ class AuthProvider with ChangeNotifier {
String? lastName,
bool isStaff,
) async {
setLoading(true);
final token = await getAccessToken();
if (token != null) {
try {
setLoading(true);
final data = {
"username": username,
"email": email,
......
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/ui/button_custom.dart';
import 'package:provider/provider.dart';
class LoanBookForm extends StatefulWidget {
......@@ -86,17 +87,16 @@ class _LoanBookForm extends State<LoanBookForm> {
},
child: const Text('Cancel'),
),
FilledButton(
ButtonCustom(
onPressed: () {
if (_formKey.currentState!.validate()) {}
authProvider
.createMemberLoan(
authProvider.user!.id,
widget.bookId,
int.parse(loanDayController.text),
)
.then((_) => Navigator.of(context).pop());
authProvider.createMemberLoan(
authProvider.user!.id,
widget.bookId,
int.parse(loanDayController.text),
);
},
isLoading: authProvider.isLoading,
child: const Text('Submit'),
),
],
......
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/loading.dart';
import 'package:provider/provider.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/ui/button_custom.dart';
class ChangePasswordForm extends StatefulWidget {
const ChangePasswordForm({super.key});
......@@ -140,7 +141,7 @@ class _ChangePasswordForm extends State<ChangePasswordForm> {
),
SizedBox(
width: double.infinity,
child: FilledButton(
child: ButtonCustom(
onPressed: () async {
if (_formKey.currentState!.validate()) {}
authProvider.changePassword(
......@@ -150,9 +151,8 @@ class _ChangePasswordForm extends State<ChangePasswordForm> {
newPasswordController2.text,
);
},
child: authProvider.isLoading
? const Loading()
: const Text("Submit"),
isLoading: authProvider.isLoading,
child: const Text("Submit"),
),
),
],
......
import 'package:provider/provider.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:go_router/go_router.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/loading.dart';
import 'package:provider/provider.dart';
import 'package:library_app/src/widgets/ui/button_custom.dart';
class LoginForm extends StatefulWidget {
const LoginForm({super.key});
......@@ -120,7 +120,7 @@ class _LoginForm extends State<LoginForm> {
children: [
SizedBox(
width: double.infinity,
child: FilledButton(
child: ButtonCustom(
onPressed: () async {
if (_formKey.currentState!.validate()) {}
authProvider.signIn(
......@@ -129,9 +129,8 @@ class _LoginForm extends State<LoginForm> {
passwordController.text,
);
},
child: authProvider.isLoading
? const Loading()
: const Text("Submit"),
isLoading: authProvider.isLoading,
child: const Text("Submit"),
),
),
SizedBox(
......
import 'package:flutter/material.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/ui/button_custom.dart';
import 'package:provider/provider.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/models/user.dart';
import 'package:provider/provider.dart';
class ProfileEditForm extends StatefulWidget {
final User? user;
......@@ -102,7 +103,7 @@ class _ProfileEditForm extends State<ProfileEditForm> {
padding: const EdgeInsets.only(top: 40.0),
child: SizedBox(
width: double.infinity,
child: FilledButton(
child: ButtonCustom(
onPressed: () {
if (_formKey.currentState!.validate()) {}
authProvider.updateUserDetail(
......@@ -115,6 +116,7 @@ class _ProfileEditForm extends State<ProfileEditForm> {
authProvider.user!.isStaff,
);
},
isLoading: authProvider.isLoading,
child: const Text("Submit"),
),
),
......
......@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/loading.dart';
import 'package:library_app/src/widgets/ui/button_custom.dart';
import 'package:provider/provider.dart';
class ResetPasswordForm extends StatefulWidget {
......@@ -85,15 +85,14 @@ class _ResetPasswordForm extends State<ResetPasswordForm> {
children: [
SizedBox(
width: double.infinity,
child: FilledButton(
child: ButtonCustom(
onPressed: () {
if (_formKey.currentState!.validate()) {}
authProvider.resetPassword(
context, emailController.text);
},
child: authProvider.isLoading
? const Loading()
: const Text("Submit"),
isLoading: authProvider.isLoading,
child: const Text("Submit"),
),
),
],
......@@ -254,7 +253,7 @@ class _ConfirmResetPasswordForm extends State<ConfirmResetPasswordForm> {
children: [
SizedBox(
width: double.infinity,
child: FilledButton(
child: ButtonCustom(
onPressed: () {
if (_formKey.currentState!.validate()) {}
authProvider.confirmResetPassword(
......@@ -264,9 +263,8 @@ class _ConfirmResetPasswordForm extends State<ConfirmResetPasswordForm> {
password2Controller.text,
);
},
child: authProvider.isLoading
? const Loading()
: const Text("Submit"),
isLoading: authProvider.isLoading,
child: const Text("Submit"),
),
),
],
......
......@@ -28,14 +28,9 @@ class _SearchForm extends State<SearchForm> {
elevation: WidgetStateProperty.all(0),
onChanged: (value) {
if (value.length >= 3) {
Future.delayed(
Duration.zero,
() {
Provider.of<BookProvider>(context, listen: false)
.setSearchKeyword(value);
Provider.of<BookProvider>(context, listen: false).getBooks();
},
);
Provider.of<BookProvider>(context, listen: false)
.setSearchKeyword(value);
Provider.of<BookProvider>(context, listen: false).getBooks();
}
},
leading: const Icon(Icons.search),
......
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:go_router/go_router.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/ui/button_custom.dart';
import 'package:provider/provider.dart';
import 'package:library_app/src/providers/auth_provider.dart';
class SignUpForm extends StatefulWidget {
const SignUpForm({super.key});
......@@ -131,7 +133,7 @@ class _SignUpForm extends State<SignUpForm> {
children: [
SizedBox(
width: double.infinity,
child: FilledButton(
child: ButtonCustom(
onPressed: () {
if (_formKey.currentState!.validate()) {}
authProvider.signUp(
......@@ -141,6 +143,7 @@ class _SignUpForm extends State<SignUpForm> {
passwordController.text,
);
},
isLoading: authProvider.isLoading,
child: const Text("Submit"),
),
),
......
import 'package:flutter/material.dart';
import 'package:library_app/src/widgets/loading.dart';
class ButtonCustom extends StatefulWidget {
final Widget? child;
final bool? isLoading;
final void Function()? onPressed;
const ButtonCustom({super.key, this.onPressed, this.child, this.isLoading});
@override
State<StatefulWidget> createState() => _ButtonCustom();
}
class _ButtonCustom extends State<ButtonCustom> {
get onPressed => widget.onPressed;
get child => widget.child;
get isLoading => widget.isLoading;
@override
Widget build(BuildContext context) {
return FilledButton(
onPressed: onPressed,
child: isLoading ? const Loading() : child,
);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment