Added toast library
This commit is contained in:
parent
827b38fdff
commit
d47763869a
|
|
@ -190,6 +190,7 @@ abstract class TaskEntity extends Object
|
|||
|
||||
TaskEntity get clone => rebuild((b) => b
|
||||
..id = BaseEntity.nextId
|
||||
..number = ''
|
||||
..isChanged = false
|
||||
..isDeleted = false
|
||||
..invoiceId = null
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:flutter/foundation.dart';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
|
|
@ -173,8 +174,18 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
TargetPlatform.android: ZoomPageTransitionsBuilder(),
|
||||
});
|
||||
Intl.defaultLocale = localeSelector(state);
|
||||
final locale = AppLocalization.createLocale(localeSelector(state));
|
||||
|
||||
return MaterialApp(
|
||||
return StyledToast(
|
||||
locale: locale,
|
||||
duration: Duration(seconds: 3),
|
||||
backgroundColor:
|
||||
state.prefState.enableDarkMode ? Colors.white : Colors.black,
|
||||
textStyle: TextStyle(
|
||||
color:
|
||||
state.prefState.enableDarkMode ? Colors.black87 : Colors.white,
|
||||
),
|
||||
child: MaterialApp(
|
||||
supportedLocales: kLanguages
|
||||
.map((String locale) => AppLocalization.createLocale(locale))
|
||||
.toList(),
|
||||
|
|
@ -189,7 +200,7 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
home: state.prefState.requireAuthentication && !_authenticated
|
||||
? LockScreen(onAuthenticatePressed: _authenticate)
|
||||
: InitScreen(),
|
||||
locale: AppLocalization.createLocale(localeSelector(state)),
|
||||
locale: locale,
|
||||
theme: state.prefState.enableDarkMode
|
||||
? ThemeData(
|
||||
pageTransitionsTheme: pageTransitionsTheme,
|
||||
|
|
@ -247,8 +258,12 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
color: hasAccentColor ? Colors.white : accentColor,
|
||||
),
|
||||
textTheme: TextTheme(
|
||||
headline6: Theme.of(context).textTheme.headline6.copyWith(
|
||||
color: hasAccentColor ? Colors.white : Colors.black,
|
||||
headline6: Theme.of(context)
|
||||
.textTheme
|
||||
.headline6
|
||||
.copyWith(
|
||||
color:
|
||||
hasAccentColor ? Colors.white : Colors.black,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
@ -259,7 +274,8 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
? {
|
||||
LoginScreen.route: (context) => LoginScreen(),
|
||||
MainScreen.route: (context) => MainScreen(),
|
||||
DashboardScreenBuilder.route: (context) => ChangeLayoutBanner(
|
||||
DashboardScreenBuilder.route: (context) =>
|
||||
ChangeLayoutBanner(
|
||||
suggestedLayout: AppLayout.mobile,
|
||||
appLayout: state.prefState.appLayout,
|
||||
child: DashboardScreenBuilder(),
|
||||
|
|
@ -292,7 +308,8 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
PaymentScreen.route: (context) => PaymentScreenBuilder(),
|
||||
PaymentViewScreen.route: (context) => PaymentViewScreen(),
|
||||
PaymentEditScreen.route: (context) => PaymentEditScreen(),
|
||||
PaymentRefundScreen.route: (context) => PaymentRefundScreen(),
|
||||
PaymentRefundScreen.route: (context) =>
|
||||
PaymentRefundScreen(),
|
||||
QuoteScreen.route: (context) => QuoteScreenBuilder(),
|
||||
QuoteViewScreen.route: (context) => QuoteViewScreen(),
|
||||
QuoteEditScreen.route: (context) => QuoteEditScreen(),
|
||||
|
|
@ -337,7 +354,8 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
UserScreen.route: (context) => UserScreenBuilder(),
|
||||
UserViewScreen.route: (context) => UserViewScreen(),
|
||||
UserEditScreen.route: (context) => UserEditScreen(),
|
||||
GroupSettingsScreen.route: (context) => GroupScreenBuilder(),
|
||||
GroupSettingsScreen.route: (context) =>
|
||||
GroupScreenBuilder(),
|
||||
GroupViewScreen.route: (context) => GroupViewScreen(),
|
||||
GroupEditScreen.route: (context) => GroupEditScreen(),
|
||||
SettingsScreen.route: (context) => SettingsScreenBuilder(),
|
||||
|
|
@ -376,10 +394,13 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
GeneratedNumbersScreen(),
|
||||
WorkflowSettingsScreen.route: (context) =>
|
||||
WorkflowSettingsScreen(),
|
||||
InvoiceDesignScreen.route: (context) => InvoiceDesignScreen(),
|
||||
InvoiceDesignScreen.route: (context) =>
|
||||
InvoiceDesignScreen(),
|
||||
ClientPortalScreen.route: (context) => ClientPortalScreen(),
|
||||
BuyNowButtonsScreen.route: (context) => BuyNowButtonsScreen(),
|
||||
EmailSettingsScreen.route: (context) => EmailSettingsScreen(),
|
||||
BuyNowButtonsScreen.route: (context) =>
|
||||
BuyNowButtonsScreen(),
|
||||
EmailSettingsScreen.route: (context) =>
|
||||
EmailSettingsScreen(),
|
||||
TemplatesAndRemindersScreen.route: (context) =>
|
||||
TemplatesAndRemindersScreen(),
|
||||
CreditCardsAndBanksScreen.route: (context) =>
|
||||
|
|
@ -388,6 +409,7 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
DataVisualizationsScreen(),
|
||||
}
|
||||
: {},
|
||||
),
|
||||
);
|
||||
}),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,9 @@ class BottomButtons extends StatelessWidget {
|
|||
children: <Widget>[
|
||||
Expanded(
|
||||
child: InkWell(
|
||||
onTap: action1Enabled && !entity.isDeleted
|
||||
onTap: action1Enabled &&
|
||||
(!entity.isDeleted ||
|
||||
action1 == EntityAction.viewPdf)
|
||||
? () {
|
||||
handleEntityAction(context, entity, action1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,51 +1,18 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/snackbar_row.dart';
|
||||
|
||||
/*
|
||||
Completer<Null> refreshCompleter(BuildContext context) {
|
||||
final Completer<Null> completer = Completer<Null>();
|
||||
|
||||
completer.future.then((_) {
|
||||
Scaffold.of(context).showSnackBar(SnackBar(
|
||||
content: SnackBarRow(
|
||||
message: AppLocalization.of(context).refreshComplete,
|
||||
)));
|
||||
}).catchError((Object error) {
|
||||
showDialog<ErrorDialog>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return ErrorDialog(error);
|
||||
});
|
||||
});
|
||||
|
||||
return completer;
|
||||
}
|
||||
*/
|
||||
|
||||
Completer<T> snackBarCompleter<T>(BuildContext context, String message,
|
||||
{bool shouldPop = false}) {
|
||||
final Completer<T> completer = Completer<T>();
|
||||
ScaffoldState scaffold;
|
||||
|
||||
try {
|
||||
scaffold = Scaffold.of(context);
|
||||
} catch (e) {
|
||||
//
|
||||
}
|
||||
|
||||
completer.future.then((_) {
|
||||
if (shouldPop && Navigator.of(context).canPop()) {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
if (scaffold != null) {
|
||||
scaffold.showSnackBar(SnackBar(
|
||||
content: SnackBarRow(
|
||||
message: message,
|
||||
)));
|
||||
}
|
||||
showToast(message);
|
||||
}).catchError((Object error) {
|
||||
if (shouldPop && Navigator.of(context).canPop()) {
|
||||
Navigator.of(context).pop();
|
||||
|
|
|
|||
|
|
@ -415,6 +415,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.5.7"
|
||||
flutter_styled_toast:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_styled_toast
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.4.0+1"
|
||||
flutter_test:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ dependencies:
|
|||
#idb_shim: ^1.11.1+1
|
||||
flutter_launcher_icons: ^0.8.0
|
||||
overflow_view: ^0.2.1
|
||||
flutter_styled_toast: ^1.4.0+1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_driver:
|
||||
|
|
|
|||
Loading…
Reference in New Issue