fix: overflow + owner managment error
This commit is contained in:
parent
86094b5d76
commit
f8f1849d9d
4 changed files with 309 additions and 281 deletions
|
|
@ -3,7 +3,6 @@ import 'package:flutter/material.dart';
|
|||
import 'package:logging/logging.dart';
|
||||
import 'package:mobile_scanner/mobile_scanner.dart';
|
||||
import 'package:seshat/domain/models/book.dart';
|
||||
import 'package:seshat/domain/models/book_instance.dart';
|
||||
import 'package:seshat/domain/models/owner.dart';
|
||||
import 'package:seshat/utils/result.dart';
|
||||
|
||||
|
|
@ -12,6 +11,12 @@ class AddViewModel extends ChangeNotifier {
|
|||
|
||||
final _log = Logger("AddViewModel");
|
||||
|
||||
/*
|
||||
* ====================
|
||||
* =====[ OWNERS ]=====
|
||||
* ====================
|
||||
*/
|
||||
|
||||
Owner? _currentOwner;
|
||||
Owner? get currentOwner => _currentOwner;
|
||||
set currentOwner(Owner? owner) {
|
||||
|
|
@ -19,48 +24,22 @@ class AddViewModel extends ChangeNotifier {
|
|||
notifyListeners();
|
||||
}
|
||||
|
||||
List<Owner> _owners = [];
|
||||
// Owner(
|
||||
// firstName: "Jean",
|
||||
// lastName: "Henri",
|
||||
// contact: "contact@gmail.com",
|
||||
// id: 1,
|
||||
// ),
|
||||
// Owner(
|
||||
// firstName: "Jeanette",
|
||||
// lastName: "Henriette",
|
||||
// contact: "contact@gmail.com",
|
||||
// id: 2,
|
||||
// ),
|
||||
// Owner(
|
||||
// firstName: "Jacques",
|
||||
// lastName: "Gerard",
|
||||
// contact: "contact@gmail.com",
|
||||
// id: 3,
|
||||
// ),
|
||||
// Owner(
|
||||
// firstName: "Jacquelines",
|
||||
// lastName: "Geraldine",
|
||||
// contact: "contact@gmail.com",
|
||||
// id: 4,
|
||||
// ),
|
||||
// Owner(
|
||||
// firstName: "Louis",
|
||||
// lastName: "Valentin",
|
||||
// contact: "contact@gmail.com",
|
||||
// id: 5,
|
||||
// ),
|
||||
// Owner(
|
||||
// firstName: "Louise",
|
||||
// lastName: "Valentine",
|
||||
// contact: "contact@gmail.com",
|
||||
// id: 6,
|
||||
// ),
|
||||
// ];
|
||||
final List<Owner> _owners = [];
|
||||
|
||||
List<Owner>? get owners => _owners;
|
||||
|
||||
Owner addOwner(String firstName, String lastName, String contact) {
|
||||
_owners!.add(
|
||||
if (_owners.isEmpty) {
|
||||
_owners.add(
|
||||
Owner(
|
||||
firstName: firstName,
|
||||
lastName: lastName,
|
||||
contact: contact,
|
||||
id: 1,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
_owners.add(
|
||||
Owner(
|
||||
firstName: firstName,
|
||||
lastName: lastName,
|
||||
|
|
@ -68,6 +47,7 @@ class AddViewModel extends ChangeNotifier {
|
|||
id: _owners.last.id + 1,
|
||||
),
|
||||
);
|
||||
}
|
||||
notifyListeners();
|
||||
return Owner(
|
||||
firstName: firstName,
|
||||
|
|
@ -77,6 +57,12 @@ class AddViewModel extends ChangeNotifier {
|
|||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* ===================
|
||||
* =====[ PRICE ]=====
|
||||
* ===================
|
||||
*/
|
||||
|
||||
bool _askPrice = true;
|
||||
bool get askPrice => _askPrice;
|
||||
set askPrice(bool newValue) {
|
||||
|
|
@ -84,6 +70,14 @@ class AddViewModel extends ChangeNotifier {
|
|||
notifyListeners();
|
||||
}
|
||||
|
||||
/*
|
||||
* =================================
|
||||
* =====[ BOOKS AND INSTANCES ]=====
|
||||
* =================================
|
||||
*/
|
||||
|
||||
/// Sends an api request with a [bacorde], then gets the [Book] that was
|
||||
/// either created or retrieved. Sens the [Book] back wrapped in a [Result].
|
||||
Future<Result<Book>> scanBook(BarcodeCapture barcode) async {
|
||||
return Result.ok(
|
||||
Book(
|
||||
|
|
@ -96,5 +90,8 @@ class AddViewModel extends ChangeNotifier {
|
|||
);
|
||||
}
|
||||
|
||||
// Result<BookInstance> sendBook() {};
|
||||
/// Sens an api request with
|
||||
// Result<BookInstance> newBookInstance() {
|
||||
|
||||
// };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,18 @@ class _AddPageState extends State<AddPage> {
|
|||
MobileScanner(
|
||||
controller: controller,
|
||||
onDetect: (barcodes) async {
|
||||
if (widget.viewModel.currentOwner == null) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(
|
||||
"Attention : vous devez choisir un·e propriétaire",
|
||||
),
|
||||
behavior: SnackBarBehavior.floating,
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
void setPrice(num newPrice) async {
|
||||
setState(() {
|
||||
price = newPrice;
|
||||
|
|
@ -68,13 +80,16 @@ class _AddPageState extends State<AddPage> {
|
|||
},
|
||||
),
|
||||
SafeArea(
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Center(
|
||||
child: Card(
|
||||
margin: EdgeInsets.symmetric(horizontal: 50),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
ListenableBuilder(
|
||||
listenable: widget.viewModel,
|
||||
|
|
@ -114,17 +129,29 @@ class _AddPageState extends State<AddPage> {
|
|||
),
|
||||
),
|
||||
),
|
||||
Expanded(child: SizedBox()),
|
||||
SizedBox(height: 100),
|
||||
SvgPicture.asset('assets/scan-overlay.svg'),
|
||||
Expanded(child: SizedBox()),
|
||||
TextButton(
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SafeArea(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Center(
|
||||
child: TextButton(
|
||||
style: ButtonStyle(
|
||||
backgroundColor: WidgetStatePropertyAll(theme.cardColor),
|
||||
),
|
||||
onPressed: () =>
|
||||
_formDialogBuilder(context, controller, widget.viewModel),
|
||||
onPressed: () => _formDialogBuilder(
|
||||
context,
|
||||
controller,
|
||||
widget.viewModel,
|
||||
),
|
||||
child: Text("Enregistrer manuellement"),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ class _ConfirmationPopupState extends State<ConfirmationPopup> {
|
|||
title: Text("Prix"),
|
||||
content: Form(
|
||||
key: _formKey,
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
|
|
@ -95,6 +96,7 @@ class _ConfirmationPopupState extends State<ConfirmationPopup> {
|
|||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,8 @@ class _OwnerPopupState extends State<OwnerPopup> {
|
|||
listenable: widget.viewModel,
|
||||
builder: (context, child) => AlertDialog(
|
||||
title: Center(child: Text("Propriétaire du livre")),
|
||||
content: Column(
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
|
|
@ -157,6 +158,7 @@ class _OwnerPopupState extends State<OwnerPopup> {
|
|||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
actions: [
|
||||
TextButton(
|
||||
|
|
|
|||
Reference in a new issue