Skip to content

Commit

Permalink
New page accessible w/carousel + GUI enhancement
Browse files Browse the repository at this point in the history
Added a new page accessible though a button located in the last page of the "Informativa e Contatti"'s carousel slider.
GUI enhancements (see contacts button, styles in carousel...)
  • Loading branch information
KLS-01 committed Jan 5, 2023
1 parent d975dc8 commit a4fab66
Show file tree
Hide file tree
Showing 4 changed files with 175 additions and 102 deletions.
Binary file added assets/images/report_it_megaphone_man.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions lib/presentation/pages/FAQinformativa_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/container.dart';
import 'package:flutter/src/widgets/framework.dart';

class FAQinformativa extends StatelessWidget {
const FAQinformativa({super.key});

@override
Widget build(BuildContext context) {
return AnimatedContainer(
color: const Color.fromRGBO(255, 254, 248, 1),
duration: const Duration(seconds: 1),
child: ListView(children: [
Text(
'FAQ',
style: Theme.of(context).textTheme.headline1,
),
]),
);
}
}
251 changes: 151 additions & 100 deletions lib/presentation/pages/informativa_contatti_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ import 'package:flutter/material.dart';
import 'package:report_it/presentation/widget/widget_info.dart';
import 'package:flutter_phone_direct_caller/flutter_phone_direct_caller.dart';

import 'FAQinformativa_page.dart';
import 'navigation_animations.dart';

class Informativa extends StatefulWidget {
@override
State<Informativa> createState() => _InformativaState();
Expand All @@ -20,51 +23,95 @@ class _InformativaState extends State<Informativa> {
children: [
const WidgetInfo(
titolo: "Informativa",
corpo: "Hai bisogno di aiuto?\nEcco qui una sezione FAQ!",
corpo:
"Vuoi sapere di più sulle discriminazioni?\nEcco qui una sezione FAQ!",
),
const SizedBox(
height: 20,
),
CarouselSlider(
options: CarouselOptions(
enableInfiniteScroll: true,
viewportFraction: 1,
height: MediaQuery.of(context).size.height * 0.55,
onPageChanged: (index, reason) {
setState(() {
_current = index;
});
},
),
items: carousels.map((i) {
return Builder(
builder: (BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
margin: const EdgeInsets.symmetric(horizontal: 5.0),
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(20)),
color: Color.fromARGB(255, 225, 225, 225)),
child: Column(
children: [
Text(
i.title,
style: Theme.of(context).textTheme.headline2,
),
Image.asset(
i.imagePath,
scale: 7,
),
Text(
i.body,
style: Theme.of(context).textTheme.bodyText2,
),
],
),
);
Padding(
padding:
const EdgeInsets.only(left: 10, right: 10, top: 0, bottom: 0),
child: CarouselSlider(
options: CarouselOptions(
enableInfiniteScroll: false,
viewportFraction: 1,
height: MediaQuery.of(context).size.height * 0.58,
onPageChanged: (index, reason) {
setState(() {
_current = index;
});
},
);
}).toList(),
),
items: carousels.map((i) {
return Builder(
builder: (BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
margin: const EdgeInsets.symmetric(horizontal: 5.0),
decoration: BoxDecoration(
borderRadius:
const BorderRadius.all(Radius.circular(20)),
color: Colors.grey.shade200,
),
child: Column(
children: [
const SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
i.title,
style: Theme.of(context).textTheme.headline2,
),
const SizedBox(width: 10),
],
),
Image.asset(
i.imagePath,
scale: 7,
),
Padding(
padding: const EdgeInsets.only(
left: 10, right: 10, top: 10),
child: i.body != ''
? (Text(
i.body,
style:
Theme.of(context).textTheme.bodyText2,
textAlign: TextAlign.center,
))
: (ElevatedButton(
onPressed: () {
Navigator.of(context).push(
createRouteTo(FAQinformativa()));
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.white,
elevation: 4,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(30)),
),
child: const Text(
"Leggi di più",
style: TextStyle(
color: Colors.black,
),
),
))),
const SizedBox(
height: 10,
),
],
),
);
},
);
}).toList(),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
Expand All @@ -86,26 +133,18 @@ class _InformativaState extends State<Informativa> {
);
}).toList(),
),

//per Leo: ho creato WidgetInfo come widget (lo trovi nella cartella widget) per creare i due box in cui
//scrivere la parte iniziale e finale (il testo) della pagina. Nel secondo widget, cioè questo sotto,
//stavo implementando la chiamata, che vedi come FlutterPhoneDirectCaller. Se avvii così il codice,
//vedi che la chiamata funziona, solo che ti prenderà come cliccabile tutto il rigo di Text e non solo il
//pezzettino in cui c'è la scritta, stavo cercando di correggere questo
// e volevo riempire i caroselli + vedere come aggiungere il tasto sull'ultimo Contents Information,
// a cui va collegata una pagina molto easy di solo testo con le varie FAQ di cui posso occuparmene io,
//quando arrivi a questo punto scrivimi che ci coordiniamo
//Ci sono arrivato donnola :3

const WidgetInfo(titolo: "Contatti", corpo: ""),
const WidgetInfo(
titolo: "Contatti",
corpo:
"Hai bisogno di aiuto?\nEcco qui i contatti delle forze dell'ordine!"),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 0),
padding: const EdgeInsets.only(left: 15, right: 15, bottom: 20),
child: Material(
elevation: 10,
color: const Color.fromARGB(255, 225, 225, 225),
elevation: 5,
color: Colors.grey.shade200,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(50),
Radius.circular(25),
),
),
child: Padding(
Expand All @@ -119,15 +158,22 @@ class _InformativaState extends State<Informativa> {
style: TextStyle(fontSize: 20),
),
const SizedBox(width: 5),
TextButton(
onPressed: () async {
FlutterPhoneDirectCaller.callNumber('113');
},
child: const Text(
'113',
style: TextStyle(fontSize: 20),
Container(
height: 40,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(20)),
color: Colors.white,
),
),
child: TextButton(
onPressed: () async {
FlutterPhoneDirectCaller.callNumber('113');
},
child: const Text(
'113',
style: TextStyle(fontSize: 20),
),
),
)
],
),
Row(
Expand All @@ -137,13 +183,20 @@ class _InformativaState extends State<Informativa> {
style: TextStyle(fontSize: 20),
),
const SizedBox(width: 5),
TextButton(
onPressed: () async {
FlutterPhoneDirectCaller.callNumber('112');
},
child: const Text(
'112',
style: TextStyle(fontSize: 20),
Container(
height: 40,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(20)),
color: Colors.white,
),
child: TextButton(
onPressed: () async {
FlutterPhoneDirectCaller.callNumber('112');
},
child: const Text(
'112',
style: TextStyle(fontSize: 20),
),
),
),
],
Expand All @@ -155,31 +208,20 @@ class _InformativaState extends State<Informativa> {
style: TextStyle(fontSize: 20),
),
const SizedBox(width: 5),
TextButton(
onPressed: () async {
FlutterPhoneDirectCaller.callNumber('117');
},
child: const Text(
'117',
style: TextStyle(fontSize: 20),
Container(
height: 40,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(20)),
color: Colors.white,
),
),
],
),
Row(
children: [
const Text(
'Samaritas',
style: TextStyle(fontSize: 20),
),
const SizedBox(width: 5),
TextButton(
onPressed: () async {
FlutterPhoneDirectCaller.callNumber('06 77208977');
},
child: const Text(
'06 77208977',
style: TextStyle(fontSize: 20),
child: TextButton(
onPressed: () async {
FlutterPhoneDirectCaller.callNumber('117');
},
child: const Text(
'117',
style: TextStyle(fontSize: 20),
),
),
),
],
Expand All @@ -196,30 +238,39 @@ class _InformativaState extends State<Informativa> {

List<ContentsInformation> carousels = [
ContentsInformation(
title: 'Race Discrimination',
title: 'Discriminazione di genere',
body:
'La discriminazione di genere è definita dalla Direttiva 2002/73/CE relativa all\'attuazione del principio della parità di trattamento tra gli uomini e le donne per quanto riguarda l\'accesso al lavoro, alla formazione e alla promozione professionale e le condizioni di lavoro.',
imagePath: 'assets/images/gender.png'),
ContentsInformation(
title: 'Discriminazione razziale',
body:
'Non esistono razze ma etnie diverse: ogni individuo, qualunque sia la sua origine e la sua cultura, non dev\'essere sminuito e va trattato con dignità.',
imagePath: 'assets/images/racism.png'),
ContentsInformation(
title: 'Religious Discrimination',
title: 'Discriminazione per credo',
body:
'Ogni individuo è libero di scegliere il proprio credo e di parlarne apertamente, senza paura alcuna.',
imagePath: 'assets/images/religion.png'),
ContentsInformation(
title: 'Sexual Discrimination',
title: 'Discriminazione sessuale',
body:
'Ogni individuo è libero di amare e porre dei vincoli a chi si può amare è soltanto il residuo di una cultura retrograda.',
imagePath: 'assets/images/sexual.png'),
ContentsInformation(
title: 'Political Discrimination',
title: 'Discriminazione politica',
body:
'Ogni individuo deve essere uguale davanti alla legge, e deve poter essere libero di votare liberamente per la fazione politica di sua preferenza senza essere visto di cattivo occhio per le sue scelte; il pensiero politico di un singolo non deve prevalere su un altro',
imagePath: 'assets/images/politics.png'),
ContentsInformation(
title: 'Disability Discrimination',
title: 'Discriminazione per disabilità',
body:
'Ogni individuo sofferente di una qualsiasi forma di disabilità, sia essa fisica o neurale, dev\'essere trattato con dignità e alla pari di ciascun altro individuo',
imagePath: 'assets/images/disability.png'),
ContentsInformation(
title: 'Vuoi saperne di più?',
body: '',
imagePath: 'assets/images/report_it_megaphone_man.png'),
];
}

Expand Down
4 changes: 2 additions & 2 deletions lib/presentation/widget/widget_info.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ class WidgetInfo extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Padding(
padding: const EdgeInsets.only(left: 10, top: 10),
padding: const EdgeInsets.only(left: 20, top: 20),
child: Text(
titolo,
style: Theme.of(context).textTheme.headline1,
textAlign: TextAlign.left,
),
),
Padding(
padding: const EdgeInsets.only(left: 10),
padding: const EdgeInsets.only(left: 20, bottom: 20),
child: Text(
corpo,
style: Theme.of(context).textTheme.bodyText1,
Expand Down

0 comments on commit a4fab66

Please sign in to comment.