feat: honestly forgot
This commit is contained in:
parent
48bcf0b1f8
commit
da953ba651
19 changed files with 1097 additions and 244 deletions
|
|
@ -1,5 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:seshat/domain/models/book_instance.dart';
|
||||
import 'package:seshat/routing/routes.dart';
|
||||
import 'package:seshat/ui/core/ui/navigation_bar.dart';
|
||||
import 'package:seshat/ui/sell_page/view_model/sell_view_model.dart';
|
||||
import 'package:seshat/ui/sell_page/widgets/scan_screen.dart';
|
||||
|
|
@ -21,93 +23,133 @@ class _SellPageState extends State<SellPage> {
|
|||
body: ListenableBuilder(
|
||||
listenable: widget.viewModel,
|
||||
builder: (context, child) {
|
||||
return Stack(
|
||||
children: [
|
||||
SafeArea(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(height: 6),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
children: [
|
||||
for (BookInstance bookInstance
|
||||
in widget.viewModel.scannedBooks)
|
||||
Card(
|
||||
child: ListTile(
|
||||
leading: Text(
|
||||
"${bookInstance.price.toString()}€",
|
||||
style: TextStyle(fontSize: 30),
|
||||
),
|
||||
title: Text(
|
||||
"Les chiens et la charrue · Patrick K. Dewdney ${bookInstance.id}",
|
||||
),
|
||||
subtitle: Text("Union Étudiante Auvergne"),
|
||||
trailing: IconButton(
|
||||
onPressed: () {
|
||||
widget.viewModel.deleteBook(
|
||||
bookInstance.id,
|
||||
);
|
||||
},
|
||||
icon: Icon(Icons.delete),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
return switch (widget.viewModel.isLoaded) {
|
||||
false => Center(child: CircularProgressIndicator()),
|
||||
true => switch (widget.viewModel.currentBal) {
|
||||
null => Center(
|
||||
child: SizedBox(
|
||||
width: 300,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
"Aucune bal n'est active.",
|
||||
style: TextStyle(fontSize: 25),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 40),
|
||||
Text("Somme minimum requise : 20€"),
|
||||
SizedBox(
|
||||
width: 400,
|
||||
child: TextField(
|
||||
decoration: InputDecoration(
|
||||
labelText: "Argent reçu",
|
||||
helperText:
|
||||
"L'argent reçu sera réparti automatiquement",
|
||||
suffixText: "€",
|
||||
border: OutlineInputBorder(),
|
||||
),
|
||||
keyboardType: TextInputType.number,
|
||||
SizedBox(height: 15),
|
||||
Text(
|
||||
"Vous devez créer puis activer une BAL pour pouvoir scanner des livres.",
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
widget.viewModel.sendSell();
|
||||
},
|
||||
icon: Icon(Icons.check),
|
||||
style: ButtonStyle(
|
||||
iconSize: WidgetStatePropertyAll(70),
|
||||
),
|
||||
),
|
||||
SizedBox(width: 70),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
widget.viewModel.showScan = true;
|
||||
},
|
||||
icon: Icon(Icons.add),
|
||||
style: ButtonStyle(
|
||||
iconSize: WidgetStatePropertyAll(70),
|
||||
elevation: WidgetStatePropertyAll(50),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
],
|
||||
SizedBox(height: 30),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
context.go(Routes.home);
|
||||
},
|
||||
child: Text("Gérer les BALs"),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
_ => Stack(
|
||||
children: [
|
||||
SafeArea(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(height: 6),
|
||||
Expanded(
|
||||
child: ListView(
|
||||
children: [
|
||||
for (BookInstance bookInstance
|
||||
in widget.viewModel.scannedBooks)
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 15,
|
||||
),
|
||||
child: Card(
|
||||
child: ListTile(
|
||||
leading: Text(
|
||||
"${bookInstance.price.toString()}€",
|
||||
style: TextStyle(fontSize: 30),
|
||||
),
|
||||
title: Text(
|
||||
"Les chiens et la charrue · Patrick K. Dewdney ${bookInstance.id}",
|
||||
),
|
||||
subtitle: Text(
|
||||
"Union Étudiante Auvergne",
|
||||
),
|
||||
trailing: IconButton(
|
||||
onPressed: () {
|
||||
widget.viewModel.deleteBook(
|
||||
bookInstance.id,
|
||||
);
|
||||
},
|
||||
icon: Icon(Icons.delete),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 40),
|
||||
Text("Somme minimum requise : 20€"),
|
||||
SizedBox(
|
||||
width: 400,
|
||||
child: TextField(
|
||||
decoration: InputDecoration(
|
||||
labelText: "Argent reçu",
|
||||
helperText:
|
||||
"L'argent reçu sera réparti automatiquement",
|
||||
suffixText: "€",
|
||||
border: OutlineInputBorder(),
|
||||
),
|
||||
keyboardType: TextInputType.number,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
widget.viewModel.sendSell();
|
||||
},
|
||||
icon: Icon(Icons.check),
|
||||
style: ButtonStyle(
|
||||
iconSize: WidgetStatePropertyAll(70),
|
||||
),
|
||||
),
|
||||
SizedBox(width: 70),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
widget.viewModel.showScan = true;
|
||||
},
|
||||
icon: Icon(Icons.add),
|
||||
style: ButtonStyle(
|
||||
iconSize: WidgetStatePropertyAll(70),
|
||||
elevation: WidgetStatePropertyAll(50),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
(widget.viewModel.showScan)
|
||||
? ScanScreen(viewModel: widget.viewModel)
|
||||
: SizedBox(),
|
||||
],
|
||||
);
|
||||
(widget.viewModel.showScan)
|
||||
? ScanScreen(viewModel: widget.viewModel)
|
||||
: SizedBox(),
|
||||
],
|
||||
),
|
||||
},
|
||||
};
|
||||
},
|
||||
),
|
||||
);
|
||||
|
|
|
|||
Reference in a new issue