repos -> controllers

This commit is contained in:
Mikkel Troels Kongsted 2025-03-12 09:02:26 +01:00
parent f1321871c9
commit afaf0b34db
22 changed files with 53 additions and 48 deletions

View File

@ -2,7 +2,7 @@ import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class AddToCartStateRepo extends ChangeNotifier { class AddToCartStateController extends ChangeNotifier {
int currentAmount = 0; int currentAmount = 0;
Timer resetTimer = Timer(const Duration(), () {}); Timer resetTimer = Timer(const Duration(), () {});

View File

@ -3,7 +3,7 @@ import 'package:mobile/models/product.dart';
class ProductIdException implements Exception {} class ProductIdException implements Exception {}
class CartRepo extends ChangeNotifier { class CartController extends ChangeNotifier {
final List<CartItem> cart = []; final List<CartItem> cart = [];
List<CartItem> allCartItems() { List<CartItem> allCartItems() {

View File

@ -3,10 +3,10 @@ import 'dart:ui' as ui;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
class LocationImageRepo extends ChangeNotifier { class LocationImageController extends ChangeNotifier {
ui.Image? image; ui.Image? image;
LocationImageRepo() { LocationImageController() {
load(); load();
} }

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class PayingStateRepo extends ChangeNotifier { class PayingStateController extends ChangeNotifier {
PayingState state = PayingState.unset; PayingState state = PayingState.unset;
void next() { void next() {

View File

@ -5,11 +5,11 @@ import 'package:mobile/results.dart';
import 'package:mobile/server/client.dart'; import 'package:mobile/server/client.dart';
import 'package:mobile/server/server.dart'; import 'package:mobile/server/server.dart';
class ProductRepo extends ChangeNotifier { class ProductController extends ChangeNotifier {
int _nextId = 0; int _nextId = 0;
List<Product> products = []; List<Product> products = [];
String query = ""; String query = "";
ProductRepo() { ProductController() {
_addAllProducts(); _addAllProducts();
} }
@ -139,11 +139,11 @@ class ProductRepo extends ChangeNotifier {
} }
} }
class ProductRepoByServer extends ChangeNotifier { class ProductControllerByServer extends ChangeNotifier {
final client = BackendServer(); final client = BackendServer();
List<Product> products = []; List<Product> products = [];
String query = ""; String query = "";
ProductRepoByServer() { ProductControllerByServer() {
fetchProductsFromServer(); fetchProductsFromServer();
} }

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:mobile/models/product.dart'; import 'package:mobile/models/product.dart';
import 'package:mobile/repos/cart.dart'; import 'package:mobile/repos/cart.dart';
class ReceiptRepo extends ChangeNotifier { class ReceiptController extends ChangeNotifier {
int nextId = 0; int nextId = 0;
final List<Receipt> receipts = []; final List<Receipt> receipts = [];

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
enum PageSelector { homePage, productsPage, cartPage, receiptsPage } enum PageSelector { homePage, productsPage, cartPage, receiptsPage }
class Routing extends ChangeNotifier { class RoutingController extends ChangeNotifier {
int currentIndex = 0; int currentIndex = 0;
void routeTo(PageSelector page) { void routeTo(PageSelector page) {

View File

@ -1,13 +1,13 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mobile/results.dart'; import 'package:mobile/results.dart';
class UsersRepo extends ChangeNotifier { class UsersControllerOld extends ChangeNotifier {
int nextId = 0; int nextId = 0;
final List<User> users = []; final List<User> users = [];
User? _loggedInUser; User? _loggedInUser;
UsersRepo() { UsersControllerOld() {
addTestUsers(); addTestUsers();
} }

View File

@ -23,14 +23,14 @@ class MyApp extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MultiProvider( return MultiProvider(
providers: [ providers: [
ChangeNotifierProvider(create: (_) => Routing()), ChangeNotifierProvider(create: (_) => RoutingController()),
ChangeNotifierProvider(create: (_) => ProductRepo()), ChangeNotifierProvider(create: (_) => ProductController()),
ChangeNotifierProvider(create: (_) => CartRepo()), ChangeNotifierProvider(create: (_) => CartController()),
ChangeNotifierProvider(create: (_) => ReceiptRepo()), ChangeNotifierProvider(create: (_) => ReceiptController()),
ChangeNotifierProvider(create: (_) => PayingStateRepo()), ChangeNotifierProvider(create: (_) => PayingStateController()),
ChangeNotifierProvider(create: (_) => AddToCartStateRepo()), ChangeNotifierProvider(create: (_) => AddToCartStateController()),
ChangeNotifierProvider(create: (_) => LocationImageRepo()), ChangeNotifierProvider(create: (_) => LocationImageController()),
ChangeNotifierProvider(create: (_) => UsersRepo()), ChangeNotifierProvider(create: (_) => UsersControllerOld()),
], ],
child: MaterialApp( child: MaterialApp(
title: 'Fresh Plaza', title: 'Fresh Plaza',

View File

@ -99,7 +99,7 @@ class AllProductsPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final productRepo = Provider.of<ProductRepo>(context); final productRepo = Provider.of<ProductController>(context);
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
@ -122,7 +122,7 @@ class AllProductsPage extends StatelessWidget {
], ],
), ),
Expanded( Expanded(
child: Consumer<ProductRepo>(builder: (_, productRepo, __) { child: Consumer<ProductController>(builder: (_, productRepo, __) {
final products = productRepo.filteredProducts; final products = productRepo.filteredProducts;
return ListView.builder( return ListView.builder(
shrinkWrap: true, shrinkWrap: true,

View File

@ -43,7 +43,7 @@ class AllReceiptsPage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return Column(
children: [ children: [
Expanded(child: Consumer<ReceiptRepo>( Expanded(child: Consumer<ReceiptController>(
builder: (_, receiptRepo, __) { builder: (_, receiptRepo, __) {
final allReceipts = receiptRepo.sortedReceiptsByDate(); final allReceipts = receiptRepo.sortedReceiptsByDate();
return ListView.builder( return ListView.builder(

View File

@ -14,7 +14,7 @@ import 'package:mobile/widgets/sized_card.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class CartItemView extends StatelessWidget { class CartItemView extends StatelessWidget {
final CartRepo cartRepo; final CartController cartRepo;
final int productId; final int productId;
final String name; final String name;
final int price; final int price;
@ -152,7 +152,7 @@ class CartPage extends StatelessWidget {
return Column( return Column(
children: [ children: [
Expanded( Expanded(
child: Consumer<CartRepo>( child: Consumer<CartController>(
builder: (_, cartRepo, __) { builder: (_, cartRepo, __) {
final cart = cartRepo.allCartItems(); final cart = cartRepo.allCartItems();
return ListView.builder( return ListView.builder(
@ -202,10 +202,11 @@ class CartPage extends StatelessWidget {
child: const Text("Cancel")), child: const Text("Cancel")),
TextButton( TextButton(
onPressed: () { onPressed: () {
final productRepo = final productRepo = context
context.read<ProductRepo>(); .read<ProductController>();
final CartRepo cartRepo = final CartController cartRepo =
context.read<CartRepo>(); context
.read<CartController>();
final productResult = productRepo final productResult = productRepo
.productWithBarcode( .productWithBarcode(
inputController.text); inputController.text);
@ -261,9 +262,10 @@ class CartPage extends StatelessWidget {
if (!context.mounted) { if (!context.mounted) {
return; return;
} }
final CartRepo cartRepo = final CartController cartRepo =
context.read<CartRepo>(); context.read<CartController>();
final productRepo = context.read<ProductRepo>(); final productRepo =
context.read<ProductController>();
final productResult = productRepo final productResult = productRepo
.productWithBarcode(result.rawContent); .productWithBarcode(result.rawContent);
switch (productResult) { switch (productResult) {

View File

@ -26,9 +26,9 @@ class Dashboard extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final pageIndexProvider = Provider.of<Routing>(context); final pageIndexProvider = Provider.of<RoutingController>(context);
int currentIndex = pageIndexProvider.currentIndex; int currentIndex = pageIndexProvider.currentIndex;
final CartRepo cartRepo = context.watch<CartRepo>(); final CartController cartRepo = context.watch<CartController>();
return Scaffold( return Scaffold(
bottomNavigationBar: BottomNavigationBar( bottomNavigationBar: BottomNavigationBar(

View File

@ -17,9 +17,10 @@ class FinishShoppingPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final CartRepo cartRepo = context.read<CartRepo>(); final CartController cartRepo = context.read<CartController>();
final ReceiptRepo receiptRepo = context.read<ReceiptRepo>(); final ReceiptController receiptRepo = context.read<ReceiptController>();
final PayingStateRepo payingStateRepo = context.watch<PayingStateRepo>(); final PayingStateController payingStateRepo =
context.watch<PayingStateController>();
final cart = cartRepo.allCartItems(); final cart = cartRepo.allCartItems();
return Scaffold( return Scaffold(
@ -87,7 +88,8 @@ class FinishShoppingPage extends StatelessWidget {
payingStateRepo.reset(); payingStateRepo.reset();
if (context.mounted) { if (context.mounted) {
Navigator.pop(context); Navigator.pop(context);
final Routing routing = context.read<Routing>(); final RoutingController routing =
context.read<RoutingController>();
routing.routeTo(PageSelector.homePage); routing.routeTo(PageSelector.homePage);
} }
}, },

View File

@ -33,7 +33,7 @@ class HomePage extends StatelessWidget {
color: Color(0xFFFFFFFF), color: Color(0xFFFFFFFF),
), ),
padding: const EdgeInsets.all(10), padding: const EdgeInsets.all(10),
child: Consumer<UsersRepo>( child: Consumer<UsersControllerOld>(
builder: (context, usersRepo, _) => Text( builder: (context, usersRepo, _) => Text(
"Saldo: ${formatDkkCents(user.balanceInDkkCents)}", "Saldo: ${formatDkkCents(user.balanceInDkkCents)}",
style: Theme.of(context).textTheme.headlineSmall)), style: Theme.of(context).textTheme.headlineSmall)),

View File

@ -62,7 +62,7 @@ class LogInFormState extends State<LogInForm> {
), ),
PrimaryButton( PrimaryButton(
onPressed: () { onPressed: () {
final usersRepo = context.read<UsersRepo>(); final usersRepo = context.read<UsersControllerOld>();
final loginResult = final loginResult =
usersRepo.login(mailController.text, passwordController.text); usersRepo.login(mailController.text, passwordController.text);

View File

@ -21,7 +21,8 @@ class ProductLocationPage extends StatelessWidget {
Text(product.name), Text(product.name),
], ],
), ),
Consumer<LocationImageRepo>(builder: (context, locationImage, child) { Consumer<LocationImageController>(
builder: (context, locationImage, child) {
if (locationImage.image == null) { if (locationImage.image == null) {
return const CircularProgressIndicator( return const CircularProgressIndicator(
color: Colors.blue, color: Colors.blue,

View File

@ -14,8 +14,8 @@ class ProductPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final AddToCartStateRepo addToCartStateRepo = final AddToCartStateController addToCartStateRepo =
context.watch<AddToCartStateRepo>(); context.watch<AddToCartStateController>();
return Scaffold( return Scaffold(
backgroundColor: Colors.white, backgroundColor: Colors.white,
body: SafeArea( body: SafeArea(
@ -90,7 +90,7 @@ class ProductPage extends StatelessWidget {
duration: const Duration(seconds: 2), duration: const Duration(seconds: 2),
); );
ScaffoldMessenger.of(context).removeCurrentSnackBar(); ScaffoldMessenger.of(context).removeCurrentSnackBar();
final cartRepo = context.read<CartRepo>(); final cartRepo = context.read<CartController>();
cartRepo.addToCart(product); cartRepo.addToCart(product);
ScaffoldMessenger.of(context).showSnackBar(snackBar); ScaffoldMessenger.of(context).showSnackBar(snackBar);
}, },

View File

@ -71,7 +71,7 @@ class RegisterFormState extends State<RegisterForm> {
obscure: true), obscure: true),
PrimaryButton( PrimaryButton(
onPressed: () { onPressed: () {
final usersRepo = context.read<UsersRepo>(); final usersRepo = context.read<UsersControllerOld>();
if (usersRepo.addUser(nameController.text, mailController.text, if (usersRepo.addUser(nameController.text, mailController.text,
passwordController.text) is Ok) { passwordController.text) is Ok) {
setState(() => registerError = false); setState(() => registerError = false);

View File

@ -31,7 +31,7 @@ class SettingsPage extends StatelessWidget {
icon: Icons.door_back_door, icon: Icons.door_back_door,
title: "Log ud", title: "Log ud",
action: (context) { action: (context) {
final users = context.read<UsersRepo>(); final users = context.read<UsersControllerOld>();
users.logout(); users.logout();
Navigator.popUntil(context, (_) => false); Navigator.popUntil(context, (_) => false);
Navigator.of(context) Navigator.of(context)

View File

@ -8,7 +8,7 @@ class SaldoSettingsPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final usersRepo = context.watch<UsersRepo>(); final usersRepo = context.watch<UsersControllerOld>();
final user = usersRepo.loggedInUser()!; final user = usersRepo.loggedInUser()!;
return Scaffold( return Scaffold(
backgroundColor: Colors.white, backgroundColor: Colors.white,