Add message notification snackbar

This commit is contained in:
Thomas Fransolet 2021-05-06 20:55:52 +02:00
parent 69664c4bec
commit 6b0f3145c1
9 changed files with 55 additions and 84 deletions

View File

@ -1,30 +1,22 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class MessageNotification extends StatelessWidget { showNotification (Color backgroundColor, Color textColor, String text, BuildContext context) {
final VoidCallback onReplay; final snackBar = SnackBar(
behavior: SnackBarBehavior.floating,
const MessageNotification({Key key, this.onReplay}) : super(key: key); duration: const Duration(milliseconds: 1500),
width: 280.0, // Width of the SnackBar.
@override backgroundColor: backgroundColor,
Widget build(BuildContext context) { shape: RoundedRectangleBorder(
return Card( borderRadius: BorderRadius.circular(10.0),
margin: const EdgeInsets.symmetric(horizontal: 4),
child: SafeArea(
child: ListTile(
leading: SizedBox.fromSize(
size: const Size(40, 40),
child: Text("YOLO")),
title: Text('Lily MacDonald'),
subtitle: Text('Do you want to see a movie?'),
trailing: IconButton(
icon: Icon(Icons.reply),
onPressed: () {
///TODO i'm not sure it should be use this widget' BuildContext to create a Dialog
///maybe i will give the answer in the future
if (onReplay != null) onReplay();
}),
),
), ),
); padding: const EdgeInsets.symmetric(
} horizontal: 8.0, // Inner padding for SnackBar content.
),
content: Text(
text,
textAlign: TextAlign.center,
style: TextStyle(color: textColor),
)
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
} }

View File

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:manager_app/Components/confirmation_dialog.dart'; import 'package:manager_app/Components/confirmation_dialog.dart';
import 'package:manager_app/Components/fetch_section_icon.dart'; import 'package:manager_app/Components/fetch_section_icon.dart';
import 'package:manager_app/Components/message_notification.dart';
import 'package:manager_app/Components/multi_select_container.dart'; import 'package:manager_app/Components/multi_select_container.dart';
import 'package:manager_app/Components/multi_string_input_container.dart'; import 'package:manager_app/Components/multi_string_input_container.dart';
import 'package:manager_app/Components/rounded_button.dart'; import 'package:manager_app/Components/rounded_button.dart';
@ -10,7 +11,6 @@ import 'package:manager_app/app_context.dart';
import 'package:manager_app/client.dart'; import 'package:manager_app/client.dart';
import 'package:manager_app/constants.dart'; import 'package:manager_app/constants.dart';
import 'package:managerapi/api.dart'; import 'package:managerapi/api.dart';
import 'package:overlay_support/overlay_support.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@ -259,14 +259,7 @@ class _SectionDetailScreenState extends State<SectionDetailScreen> {
managerAppContext.selectedSection = section; managerAppContext.selectedSection = section;
appContext.setContext(managerAppContext); appContext.setContext(managerAppContext);
// popup a toast. showNotification(Colors.green, kWhite, 'La section a été sauvegardée avec succès', context);
toast('La section a été sauvegardée avec succès');
// show a notification at top of screen.
/*showSimpleNotification(
Text("La configuration a été sauvegardée avec succès"),
position: NotificationPosition.bottom,
background: Colors.green);*/
} }
getSpecificData(SectionDTO sectionDTO, AppContext appContext) { getSpecificData(SectionDTO sectionDTO, AppContext appContext) {

View File

@ -5,6 +5,7 @@ import 'package:flutter/painting.dart';
import 'package:manager_app/Components/color_picker_input_container.dart'; import 'package:manager_app/Components/color_picker_input_container.dart';
import 'package:manager_app/Components/confirmation_dialog.dart'; import 'package:manager_app/Components/confirmation_dialog.dart';
import 'package:manager_app/Components/fetch_section_icon.dart'; import 'package:manager_app/Components/fetch_section_icon.dart';
import 'package:manager_app/Components/message_notification.dart';
import 'package:manager_app/Components/multi_select_container.dart'; import 'package:manager_app/Components/multi_select_container.dart';
import 'package:manager_app/Components/rounded_button.dart'; import 'package:manager_app/Components/rounded_button.dart';
import 'package:manager_app/Components/string_input_container.dart'; import 'package:manager_app/Components/string_input_container.dart';
@ -14,7 +15,6 @@ import 'package:manager_app/app_context.dart';
import 'package:manager_app/client.dart'; import 'package:manager_app/client.dart';
import 'package:manager_app/constants.dart'; import 'package:manager_app/constants.dart';
import 'package:managerapi/api.dart'; import 'package:managerapi/api.dart';
import 'package:overlay_support/overlay_support.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@ -361,14 +361,7 @@ class _ConfigurationDetailScreenState extends State<ConfigurationDetailScreen> {
managerAppContext.selectedConfiguration = configuration; managerAppContext.selectedConfiguration = configuration;
appContext.setContext(managerAppContext); appContext.setContext(managerAppContext);
// popup a toast. showNotification(Colors.green, kWhite, 'La configuration a été sauvegardée avec succès', context);
toast('La configuration a été sauvegardée avec succès');
// show a notification at top of screen.
/*showSimpleNotification(
Text("La configuration a été sauvegardée avec succès"),
position: NotificationPosition.bottom,
background: Colors.green);*/
} }
Future<ConfigurationDTO> getConfiguration(ConfigurationDetailScreen widget, Client client) async { Future<ConfigurationDTO> getConfiguration(ConfigurationDetailScreen widget, Client client) async {

View File

@ -1,11 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:manager_app/Components/message_notification.dart';
import 'package:manager_app/Components/rounded_button.dart'; import 'package:manager_app/Components/rounded_button.dart';
import 'package:manager_app/Components/string_input_container.dart'; import 'package:manager_app/Components/string_input_container.dart';
import 'package:manager_app/Models/managerContext.dart'; import 'package:manager_app/Models/managerContext.dart';
import 'package:manager_app/app_context.dart'; import 'package:manager_app/app_context.dart';
import 'package:manager_app/constants.dart'; import 'package:manager_app/constants.dart';
import 'package:managerapi/api.dart'; import 'package:managerapi/api.dart';
import 'package:overlay_support/overlay_support.dart';
void showNewConfiguration(AppContext appContext, BuildContext context) { void showNewConfiguration(AppContext appContext, BuildContext context) {
ConfigurationDTO configurationDTO = new ConfigurationDTO(); ConfigurationDTO configurationDTO = new ConfigurationDTO();
@ -83,7 +83,6 @@ void create(ConfigurationDTO configurationDTO, AppContext appContext, context) a
managerAppContext.selectedConfiguration = null; managerAppContext.selectedConfiguration = null;
appContext.setContext(managerAppContext); appContext.setContext(managerAppContext);
// popup a toast. showNotification(Colors.green, kWhite, 'La configuration a été créée avec succès', context);
toast('La configuration a été créée avec succès');
} }
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:manager_app/Components/message_notification.dart';
import 'package:manager_app/Components/multi_select_container.dart'; import 'package:manager_app/Components/multi_select_container.dart';
import 'package:manager_app/Components/rounded_button.dart'; import 'package:manager_app/Components/rounded_button.dart';
import 'package:manager_app/Components/string_input_container.dart'; import 'package:manager_app/Components/string_input_container.dart';
@ -6,7 +7,6 @@ import 'package:manager_app/Models/managerContext.dart';
import 'package:manager_app/app_context.dart'; import 'package:manager_app/app_context.dart';
import 'package:manager_app/constants.dart'; import 'package:manager_app/constants.dart';
import 'package:managerapi/api.dart'; import 'package:managerapi/api.dart';
import 'package:overlay_support/overlay_support.dart';
void showNewSection(ConfigurationDTO configurationDTO, AppContext appContext, BuildContext context) { void showNewSection(ConfigurationDTO configurationDTO, AppContext appContext, BuildContext context) {
SectionDTO sectionDTO = new SectionDTO(); SectionDTO sectionDTO = new SectionDTO();
@ -100,7 +100,6 @@ void create(SectionDTO sectionDTO, AppContext appContext, BuildContext context)
managerAppContext.selectedConfiguration.sectionIds.add(newSection.id); managerAppContext.selectedConfiguration.sectionIds.add(newSection.id);
appContext.setContext(managerAppContext); appContext.setContext(managerAppContext);
// popup a toast. showNotification(Colors.green, kWhite, 'La section a été créée avec succès !', context);
toast('La section a été créée avec succès');
} }
} }

View File

@ -1,13 +1,10 @@
import 'package:manager_app/Models/managerContext.dart'; import 'package:manager_app/Models/managerContext.dart';
import 'package:manager_app/Screens/Main/main_screen.dart'; import 'package:manager_app/Screens/Main/main_screen.dart';
import 'package:managerapi/api.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'Screens/login_screen.dart'; import 'Screens/login_screen.dart';
import 'app_context.dart'; import 'app_context.dart';
import 'client.dart';
import 'constants.dart'; import 'constants.dart';
import 'package:overlay_support/overlay_support.dart';
void main() { void main() {
String initialRoute; String initialRoute;
@ -37,27 +34,25 @@ class _MyAppState extends State<MyApp> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ChangeNotifierProvider<AppContext>( return ChangeNotifierProvider<AppContext>(
create: (_) => AppContext(widget.managerAppContext), create: (_) => AppContext(widget.managerAppContext),
child: OverlaySupport( child: MaterialApp(
child: MaterialApp( debugShowCheckedModeBanner: false,
debugShowCheckedModeBanner: false, title: 'Manager App Demo',
title: 'Manager App Demo', initialRoute: widget.initialRoute,
initialRoute: widget.initialRoute, /*supportedLocales: [
/*supportedLocales: [ const Locale('en', 'US'),
const Locale('en', 'US'), //const Locale('fr', 'FR'),
//const Locale('fr', 'FR'), ],*/
],*/ theme: ThemeData(
theme: ThemeData( primarySwatch: Colors.blue,
primarySwatch: Colors.blue, scaffoldBackgroundColor: kBackgroundColor,
scaffoldBackgroundColor: kBackgroundColor, //fontFamily: "Vollkorn",
//fontFamily: "Vollkorn", textTheme: TextTheme(bodyText1: TextStyle(color: kBodyTextColor)),
textTheme: TextTheme(bodyText1: TextStyle(color: kBodyTextColor)), visualDensity: VisualDensity.adaptivePlatformDensity,
visualDensity: VisualDensity.adaptivePlatformDensity, ),
), routes: {
routes: { '/welcome': (context) => LoginScreen(),
'/welcome': (context) => LoginScreen(), '/main': (context) => MainScreen()
'/main': (context) => MainScreen() }
}
),
), ),
); );
} }

View File

@ -56,7 +56,7 @@ packages:
name: cupertino_icons name: cupertino_icons
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.2" version: "1.0.3"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
@ -116,6 +116,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.10" version: "0.12.10"
material_segmented_control:
dependency: "direct main"
description:
name: material_segmented_control
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.2"
meta: meta:
dependency: transitive dependency: transitive
description: description:
@ -137,13 +144,6 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
overlay_support:
dependency: "direct main"
description:
name: overlay_support
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5-hotfix1"
path: path:
dependency: transitive dependency: transitive
description: description:

View File

@ -26,10 +26,10 @@ dependencies:
rxdart: 0.22.0 rxdart: 0.22.0
provider: ^5.0.0 provider: ^5.0.0
overlay_support: 1.0.5-hotfix1
auto_size_text: ^2.1.0 auto_size_text: ^2.1.0
flutter_colorpicker: ^0.4.0 flutter_colorpicker: ^0.4.0
multiselect_formfield: ^0.1.6 multiselect_formfield: ^0.1.6
material_segmented_control: ^3.1.2
managerapi: managerapi:
path: manager_api path: manager_api