From 77f658f09ec7ed57a69ca7e3344f21f0eb2c3da0 Mon Sep 17 00:00:00 2001 From: Eric Ampire Date: Thu, 25 Mar 2021 17:19:15 +0200 Subject: [PATCH] Adding Date selector --- .../gradle/wrapper/gradle-wrapper.properties | 2 +- lib/main.dart | 1 + lib/ui/custom/date_selector.dart | 103 ++++++++++++++++++ lib/ui/view/auth.dart | 6 +- lib/ui/view/home.dart | 19 ++-- lib/ui/view/news/item_regular_news.dart | 54 --------- pubspec.yaml | 5 + 7 files changed, 120 insertions(+), 70 deletions(-) create mode 100644 lib/ui/custom/date_selector.dart diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index bc6a58a..b1543eb 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip diff --git a/lib/main.dart b/lib/main.dart index 736aa82..d447902 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_settings_screens/flutter_settings_screens.dart'; diff --git a/lib/ui/custom/date_selector.dart b/lib/ui/custom/date_selector.dart new file mode 100644 index 0000000..5611469 --- /dev/null +++ b/lib/ui/custom/date_selector.dart @@ -0,0 +1,103 @@ +import 'package:flutter/material.dart'; + +class DateSelector extends StatefulWidget { + @override + _DateSelectorState createState() => _DateSelectorState(); +} + +class _DateSelectorState extends State { + final List months = [ + "Janvier", + "Février", + "Mars", + "Avril", + "Mai", + "Juin", + "Juillet", + "Aout", + "Septembre", + "Octobre", + "Novembre", + "Decembre" + ]; + + var _selectedIndex = 0; + + void _updateSelectedItem(int index) { + setState(() { + _selectedIndex = index; + }); + } + + @override + Widget build(BuildContext context) { + return SliverToBoxAdapter( + child: SizedBox( + height: 32, + child: ListView( + scrollDirection: Axis.horizontal, + children: _buildSelector(), + ), + ), + ); + } + + List _buildSelector() { + return months + .asMap() + .map( + (key, value) => MapEntry( + key, + chipForRow( + label: value, + isSelected: key == _selectedIndex, + currentPosition: key, + ), + ), + ) + .values + .toList(); + } + + Widget chipForRow({String label, bool isSelected, int currentPosition}) { + if (isSelected) { + return SizedBox( + height: 28, + child: TextButton( + onPressed: () { _updateSelectedItem(currentPosition); }, + child: Text( + label, + style: TextStyle( + fontSize: 14, + color: Colors.white, + ), + ), + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(Color(0xFFFF567E)), + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(4), + ), + ), + ), + ), + ), + ); + } else { + return SizedBox( + height: 28, + child: TextButton( + onPressed: () { _updateSelectedItem(currentPosition); }, + child: Text( + label, + style: TextStyle( + fontSize: 14, + color: Color(0xFF8F8F8F), + ), + ), + ), + ); + } + } +} diff --git a/lib/ui/view/auth.dart b/lib/ui/view/auth.dart index 40edbe9..43d410b 100644 --- a/lib/ui/view/auth.dart +++ b/lib/ui/view/auth.dart @@ -87,11 +87,9 @@ class AuthView extends StatelessWidget { onPressed: () => _signInWithFacebook(context), text: "Se connecter avec Facebook", ), - SizedBox( - height: 24, - ), + SizedBox(height: 24), Text( - "En vous connectant, vous acceptez nos conditions et termes d'utilisation.", + "En vous connectant, vous acceptez nos termes et conditions d'utilisation.", style: TextStyle( inherit: false, color: Colors.black87, diff --git a/lib/ui/view/home.dart b/lib/ui/view/home.dart index 0f87ff1..39104d5 100644 --- a/lib/ui/view/home.dart +++ b/lib/ui/view/home.dart @@ -1,30 +1,27 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:le_kiosque_by_gcs/model/magazine.dart'; +import 'package:le_kiosque_by_gcs/ui/custom/date_selector.dart'; import 'package:le_kiosque_by_gcs/ui/custom/item_mag_row.dart'; import 'package:le_kiosque_by_gcs/ui/custom/item_mag_row_newest.dart'; class HomeView extends StatelessWidget { - @override Widget build(BuildContext context) { - final summary = "Voyez ce jeu exquis wallon, de graphie en kit mais bref. Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à côté de l\"alcôve ovoïde, où les bûches se consument dans l\"âtre"; - final url = "https://miningandbusiness.com/wp-content/uploads/2021/02/03f19c3a-1d92-4be7-ac54-f52b37e626ad-561x771.jpg"; - final urlPrd = "http://www.africau.edu/images/default/sample.pdf"; - return Scaffold( body: Padding( padding: const EdgeInsets.all(16.0), child: CustomScrollView( slivers: [ - ItemMagRowNewest(magazines: [Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary)]), - ItemMagRow(rowTitle: "Buzzz Magazine", magazines: [Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary)]), - ItemMagRow(rowTitle: "Hamaji Magazine", magazines: [Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary)]), - ItemMagRow(rowTitle: "Mining and buziness", magazines: [Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary)]), - ItemMagRow(rowTitle: "Declic Car Magazine", magazines: [Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary)]), - ItemMagRow(rowTitle: "Congo Airways", magazines: [Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary), Magazine(urlCover: url, magazineUrl: urlPrd, summaryText: summary)]), + DateSelector(), + ItemMagRowNewest(magazines: magazinesTest), + ItemMagRow(rowTitle: "Buzzz Magazine", magazines: magazinesTest), + ItemMagRow(rowTitle: "Hamaji Magazine", magazines: magazinesTest), + ItemMagRow(rowTitle: "Mining and buziness", magazines: magazinesTest), + ItemMagRow(rowTitle: "Declic Car Magazine", magazines: magazinesTest), + ItemMagRow(rowTitle: "Congo Airways", magazines: magazinesTest), ], ), ), diff --git a/lib/ui/view/news/item_regular_news.dart b/lib/ui/view/news/item_regular_news.dart index 6027057..2eeedbc 100644 --- a/lib/ui/view/news/item_regular_news.dart +++ b/lib/ui/view/news/item_regular_news.dart @@ -70,60 +70,6 @@ class ItemRegularNews extends StatelessWidget { ), ), ); - return InkWell( - onTap: () { - _showDetailNews(context); - }, - child: Padding( - padding: const EdgeInsets.only(left: 16, right: 16), - child: Card( - elevation: 4, - child: Container( - width: double.infinity, - height: 120, - child: Row( - children: [ - Container( - height: 100, - width: 100, - decoration: BoxDecoration( - color: Colors.grey, - shape: BoxShape.rectangle, - borderRadius: BorderRadius.all( - Radius.circular(10), - ), - image: DecorationImage( - image: NetworkImage(news.previewUrl), - fit: BoxFit.cover, - ), - ), - ), - Column( - children: [ - Padding( - padding: EdgeInsets.all(16.0), - child: Text( - news.title, - overflow: TextOverflow.ellipsis, - maxLines: 4, - style: TextStyle( - fontSize: 17, - color: Colors.black, - ), - ), - ), - Padding( - padding: const EdgeInsets.all(16), - child: Image.network(news.sourceUrl), - ) - ], - ) - ], - ), - ), - ), - ), - ); } void _showDetailNews(BuildContext context) {} diff --git a/pubspec.yaml b/pubspec.yaml index 5493e02..4b59253 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,6 +17,9 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html version: 1.0.0+1 +module: + androidX: true + environment: sdk: ">=2.7.0 <3.0.0" @@ -51,10 +54,12 @@ flutter: # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. + generate: true uses-material-design: true assets: - assets/images/ + - lang/ # To add assets to your application, add an assets section, like this: # assets: