Unverified Commit b436da7f authored by Ilham Maulana Pratama's avatar Ilham Maulana Pratama Committed by GitHub

Merge pull request #1 from impfundev/development

Development
parents 925c2451 a19ae843
...@@ -12,8 +12,15 @@ class BookProvider with ChangeNotifier { ...@@ -12,8 +12,15 @@ class BookProvider with ChangeNotifier {
String? searchKeyword; String? searchKeyword;
String? filterByCategory; String? filterByCategory;
bool isLoading = false;
void setLoading(bool value) {
isLoading = value;
}
Future<void> getBooks() async { Future<void> getBooks() async {
try { try {
setLoading(true);
String url = '$baseUrl/books'; String url = '$baseUrl/books';
if (filterByCategory != null) { if (filterByCategory != null) {
url += '?category__name=$filterByCategory'; url += '?category__name=$filterByCategory';
...@@ -34,6 +41,7 @@ class BookProvider with ChangeNotifier { ...@@ -34,6 +41,7 @@ class BookProvider with ChangeNotifier {
debugPrint("Error: Fetch books failed, $code"); debugPrint("Error: Fetch books failed, $code");
} }
setLoading(false);
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Error: Fetch books failed, $error"); debugPrint("Error: Fetch books failed, $error");
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/forms/login_form.dart'; import 'package:library_app/src/widgets/forms/login_form.dart';
import 'package:library_app/src/widgets/forms/profile_edit_form.dart';
import 'package:library_app/src/widgets/forms/reset_password_form.dart'; import 'package:library_app/src/widgets/forms/reset_password_form.dart';
import 'package:library_app/src/widgets/forms/sign_up_form.dart'; import 'package:library_app/src/widgets/forms/sign_up_form.dart';
import 'package:provider/provider.dart';
class FormScreen extends StatefulWidget { class FormScreen extends StatefulWidget {
final String title; final String title;
...@@ -121,35 +118,3 @@ class ConfirmResetPasswordScreen extends StatelessWidget { ...@@ -121,35 +118,3 @@ class ConfirmResetPasswordScreen extends StatelessWidget {
); );
} }
} }
class ProfileEditScreen extends StatelessWidget {
const ProfileEditScreen({
super.key,
});
@override
Widget build(BuildContext context) {
String title = "Edit Profile";
return Scaffold(
appBar: AppBar(
title: Text(title),
leading: BackButton(
onPressed: () => context.pop(),
),
),
body: Consumer<AuthProvider>(
builder: (context, authProvider, child) {
return ListView(children: [
Container(
width: double.infinity,
padding:
const EdgeInsets.symmetric(horizontal: 20.0, vertical: 40.0),
child: ProfileEditForm(user: authProvider.user),
),
]);
},
),
);
}
}
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:go_router/go_router.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/forms/profile_edit_form.dart';
class ProfileEditScreen extends StatelessWidget {
const ProfileEditScreen({
super.key,
});
@override
Widget build(BuildContext context) {
String title = "Edit Profile";
return Scaffold(
appBar: AppBar(
title: Text(title),
leading: BackButton(
onPressed: () => context.pop(),
),
),
body: Consumer<AuthProvider>(
builder: (context, authProvider, child) {
return ListView(children: [
Container(
width: double.infinity,
padding:
const EdgeInsets.symmetric(horizontal: 20.0, vertical: 40.0),
child: ProfileEditForm(user: authProvider.user),
),
]);
},
),
);
}
}
...@@ -25,7 +25,7 @@ class _BookList extends State<BookList> { ...@@ -25,7 +25,7 @@ class _BookList extends State<BookList> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<BookProvider>( return Consumer<BookProvider>(
builder: (context, bookProvider, child) { builder: (context, bookProvider, child) {
if (bookProvider.books != null) { if (!bookProvider.isLoading) {
final Iterable<Book> books = bookProvider.books!.map((book) { final Iterable<Book> books = bookProvider.books!.map((book) {
if (book["category_detail"] != null) { if (book["category_detail"] != null) {
final Category category = Category.fromJson( final Category category = Category.fromJson(
......
...@@ -27,9 +27,14 @@ class _SearchForm extends State<SearchForm> { ...@@ -27,9 +27,14 @@ class _SearchForm extends State<SearchForm> {
hintText: "Enter keywords...", hintText: "Enter keywords...",
elevation: WidgetStateProperty.all(0), elevation: WidgetStateProperty.all(0),
onChanged: (value) { onChanged: (value) {
Provider.of<BookProvider>(context, listen: false) Future.delayed(
.setSearchKeyword(value); Duration.zero,
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), leading: const Icon(Icons.search),
), ),
......
...@@ -44,9 +44,8 @@ class LoanItem extends StatelessWidget { ...@@ -44,9 +44,8 @@ class LoanItem extends StatelessWidget {
Offstage( Offstage(
offstage: user == null, offstage: user == null,
child: Card( child: Card(
color: Theme.of(context).primaryColor, color: Theme.of(context).canvasColor,
child: ListTile( child: ListTile(
textColor: Colors.white,
title: Text(user != null ? user!.username : ""), title: Text(user != null ? user!.username : ""),
subtitle: Text(user != null ? user!.email : ""), subtitle: Text(user != null ? user!.email : ""),
), ),
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:library_app/src/providers/auth_provider.dart'; import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/screens/form_screen.dart'; import 'package:library_app/src/screens/profile_edit_screen.dart';
import 'package:library_app/src/widgets/navigations.dart'; import 'package:library_app/src/widgets/navigations.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
......
...@@ -86,14 +86,6 @@ packages: ...@@ -86,14 +86,6 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_keychain:
dependency: "direct main"
description:
name: flutter_keychain
sha256: "0d000c0e9b3c16fdec016df406b4e89e7195bf719ed0882157400f1e16323cf8"
url: "https://pub.dev"
source: hosted
version: "2.5.0"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
......
...@@ -40,7 +40,6 @@ dependencies: ...@@ -40,7 +40,6 @@ dependencies:
intl: ^0.19.0 intl: ^0.19.0
provider: ^6.1.2 provider: ^6.1.2
http: ^1.2.2 http: ^1.2.2
flutter_keychain: ^2.5.0
flutter_secure_storage: ^9.2.2 flutter_secure_storage: ^9.2.2
go_router: ^14.2.1 go_router: ^14.2.1
......
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