mirror of
https://github.com/Mercantec-GHC/h4-projekt-gruppe-0-sm.git
synced 2025-04-27 16:24:07 +02:00
fix dimmed safearea and translate error messages
This commit is contained in:
parent
0b2b6f5a18
commit
57133e7a13
@ -19,6 +19,9 @@ import 'package:mobile/controllers/routing.dart';
|
|||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
||||||
|
ErrorMessages.init("danish");
|
||||||
|
|
||||||
final server = BackendServer();
|
final server = BackendServer();
|
||||||
final usersController = UsersController(server: server);
|
final usersController = UsersController(server: server);
|
||||||
final sessionController = SessionController(server: server);
|
final sessionController = SessionController(server: server);
|
||||||
|
@ -3,6 +3,7 @@ import 'package:mobile/controllers/routing.dart';
|
|||||||
import 'package:mobile/controllers/cart.dart';
|
import 'package:mobile/controllers/cart.dart';
|
||||||
import 'package:mobile/controllers/paying_state.dart';
|
import 'package:mobile/controllers/paying_state.dart';
|
||||||
import 'package:mobile/results.dart';
|
import 'package:mobile/results.dart';
|
||||||
|
import 'package:mobile/server/server.dart';
|
||||||
import 'package:mobile/utils/price.dart';
|
import 'package:mobile/utils/price.dart';
|
||||||
import 'package:mobile/widgets/primary_button.dart';
|
import 'package:mobile/widgets/primary_button.dart';
|
||||||
import 'package:mobile/widgets/receipt_item.dart';
|
import 'package:mobile/widgets/receipt_item.dart';
|
||||||
@ -20,10 +21,10 @@ class FinishShoppingPage extends StatelessWidget {
|
|||||||
final cart = cartController.allCartItems();
|
final cart = cartController.allCartItems();
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: SafeArea(
|
body: Stack(
|
||||||
child: Stack(
|
children: [
|
||||||
children: [
|
SafeArea(
|
||||||
Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
const BackButton(),
|
const BackButton(),
|
||||||
@ -57,14 +58,13 @@ class FinishShoppingPage extends StatelessWidget {
|
|||||||
payingStateRepo.next();
|
payingStateRepo.next();
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
if (await cartController.purchase()
|
if (await cartController.purchase()
|
||||||
is Err<Null, String>) {
|
case Err<Null, String>(value: final message)) {
|
||||||
if (context.mounted) {
|
if (context.mounted) {
|
||||||
showDialog<String>(
|
showDialog<String>(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (BuildContext context) =>
|
builder: (BuildContext context) =>
|
||||||
AlertDialog(
|
AlertDialog(
|
||||||
content: const Text(
|
content: Text(ErrorMessages.fancy(message)),
|
||||||
'Du har desværre ikke råd til at købe dette'),
|
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
@ -93,55 +93,55 @@ class FinishShoppingPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
if (payingStateRepo.state != PayingState.unset) ...[
|
),
|
||||||
Container(
|
if (payingStateRepo.state != PayingState.unset) ...[
|
||||||
color: Colors.black.withValues(alpha: 0.5),
|
Container(
|
||||||
),
|
color: Colors.black.withValues(alpha: 0.5),
|
||||||
],
|
),
|
||||||
Center(
|
],
|
||||||
child: Column(
|
Center(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
child: Column(
|
||||||
children: [
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
...switch (payingStateRepo.state) {
|
children: [
|
||||||
PayingState.unset => [],
|
...switch (payingStateRepo.state) {
|
||||||
PayingState.loading => [
|
PayingState.unset => [],
|
||||||
Container(
|
PayingState.loading => [
|
||||||
decoration: const BoxDecoration(
|
Container(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
decoration: const BoxDecoration(
|
||||||
color: Colors.white,
|
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||||
),
|
color: Colors.white,
|
||||||
padding: const EdgeInsets.all(20),
|
),
|
||||||
child: SizedBox(
|
padding: const EdgeInsets.all(20),
|
||||||
width: 50,
|
child: SizedBox(
|
||||||
height: 50,
|
width: 50,
|
||||||
child: CircularProgressIndicator(
|
height: 50,
|
||||||
valueColor: AlwaysStoppedAnimation<Color>(
|
child: CircularProgressIndicator(
|
||||||
Theme.of(context).primaryColor),
|
valueColor: AlwaysStoppedAnimation<Color>(
|
||||||
strokeWidth: 6.0,
|
Theme.of(context).primaryColor),
|
||||||
),
|
strokeWidth: 6.0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
PayingState.done => [
|
],
|
||||||
Container(
|
PayingState.done => [
|
||||||
padding: const EdgeInsets.all(10),
|
Container(
|
||||||
decoration: const BoxDecoration(
|
padding: const EdgeInsets.all(10),
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
decoration: const BoxDecoration(
|
||||||
color: Colors.white,
|
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||||
),
|
color: Colors.white,
|
||||||
child: Icon(
|
),
|
||||||
Icons.check_rounded,
|
child: Icon(
|
||||||
color: Theme.of(context).primaryColor,
|
Icons.check_rounded,
|
||||||
size: 70,
|
color: Theme.of(context).primaryColor,
|
||||||
),
|
size: 70,
|
||||||
)
|
),
|
||||||
]
|
)
|
||||||
},
|
]
|
||||||
],
|
},
|
||||||
),
|
],
|
||||||
)
|
),
|
||||||
],
|
)
|
||||||
),
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:mobile/models/cart_item.dart';
|
import 'package:mobile/models/cart_item.dart';
|
||||||
import 'package:mobile/models/product.dart';
|
import 'package:mobile/models/product.dart';
|
||||||
@ -32,3 +33,62 @@ abstract class Server {
|
|||||||
|
|
||||||
Image productImage(int productId);
|
Image productImage(int productId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ErrorMessages {
|
||||||
|
final String language;
|
||||||
|
|
||||||
|
static ErrorMessages? _instance;
|
||||||
|
|
||||||
|
static init(String language) {
|
||||||
|
_instance = ErrorMessages(language: language);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ErrorMessages get instance {
|
||||||
|
final instance = _instance;
|
||||||
|
if (instance == null) {
|
||||||
|
throw NotInitialized();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
ErrorMessages({required this.language});
|
||||||
|
|
||||||
|
static String fancy(String message) {
|
||||||
|
return instance._fancy(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
String _fancy(String message) {
|
||||||
|
switch (language) {
|
||||||
|
case "danish":
|
||||||
|
return _fancyDanish(message);
|
||||||
|
default:
|
||||||
|
return "error: $message";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String _fancyDanish(String message) {
|
||||||
|
switch (message) {
|
||||||
|
case "insufficient funds":
|
||||||
|
return "Du har desværre ikke nok penge på kontoen.";
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (kDebugMode) {
|
||||||
|
throw NotTranslated(message: message);
|
||||||
|
}
|
||||||
|
return "error: $message";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class NotInitialized implements Exception {}
|
||||||
|
|
||||||
|
class NotTranslated implements Exception {
|
||||||
|
final String message;
|
||||||
|
|
||||||
|
NotTranslated({required this.message});
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return "${super.toString()}: message \"$message\" is not translated";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user