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 {
String? searchKeyword;
String? filterByCategory;
bool isLoading = false;
void setLoading(bool value) {
isLoading = value;
}
Future<void> getBooks() async {
try {
setLoading(true);
String url = '$baseUrl/books';
if (filterByCategory != null) {
url += '?category__name=$filterByCategory';
......@@ -34,6 +41,7 @@ class BookProvider with ChangeNotifier {
debugPrint("Error: Fetch books failed, $code");
}
setLoading(false);
notifyListeners();
} catch (error) {
debugPrint("Error: Fetch books failed, $error");
......
import 'package:flutter/material.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/profile_edit_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:provider/provider.dart';
class FormScreen extends StatefulWidget {
final String title;
......@@ -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> {
Widget build(BuildContext context) {
return Consumer<BookProvider>(
builder: (context, bookProvider, child) {
if (bookProvider.books != null) {
if (!bookProvider.isLoading) {
final Iterable<Book> books = bookProvider.books!.map((book) {
if (book["category_detail"] != null) {
final Category category = Category.fromJson(
......
......@@ -27,10 +27,15 @@ class _SearchForm extends State<SearchForm> {
hintText: "Enter keywords...",
elevation: WidgetStateProperty.all(0),
onChanged: (value) {
Future.delayed(
Duration.zero,
() {
Provider.of<BookProvider>(context, listen: false)
.setSearchKeyword(value);
Provider.of<BookProvider>(context, listen: false).getBooks();
},
);
},
leading: const Icon(Icons.search),
),
);
......
......@@ -44,9 +44,8 @@ class LoanItem extends StatelessWidget {
Offstage(
offstage: user == null,
child: Card(
color: Theme.of(context).primaryColor,
color: Theme.of(context).canvasColor,
child: ListTile(
textColor: Colors.white,
title: Text(user != null ? user!.username : ""),
subtitle: Text(user != null ? user!.email : ""),
),
......
import 'package:flutter/material.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:provider/provider.dart';
......
......@@ -86,14 +86,6 @@ packages:
description: flutter
source: sdk
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:
dependency: "direct dev"
description:
......
......@@ -40,7 +40,6 @@ dependencies:
intl: ^0.19.0
provider: ^6.1.2
http: ^1.2.2
flutter_keychain: ^2.5.0
flutter_secure_storage: ^9.2.2
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