Wednesday 4 September 2019

An App Template For GDG DevFest with flutter




GDG DEVFEST APP

This application is for people who want to attend different Devfests and tech events across the world. This app contains pieces of information about tech events.

Get it on Google Play
Get it on the App Store

📸 ScreenShots








Show some :heart: and star the repo to support the project

Overview

DevFest Mobile application is for all the GDG Devfests around the world. You can see the agenda in the app as well as the speakers and other updates regarding the devfest.

Technology Stack

  • Flutter
  • Flutter Bloc
  • Firebase (Upcoming)

Getting Started

  1. Fork repository and clone your fork locally
  2. Install Flutter 1.7.8
  3. Install Android Studio / IntelliJ / VSCode
  4. Preparing Release for Android
  5. Preparing Release for iOS

Building the project

Missing Key.Properties file

If you try to build the project straight away, you'll get an error complaining that a key.properties file is missing and Exit code 1 from: /GDG-DevFest-App-master/android/gradlew app:properties:. To resolve that,
  1. Open GDG-DevFest-App-master\android\app\build.gradle file and comment following lines-
    //keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    signingConfigs {
    // release {
    // keyAlias keystoreProperties['keyAlias']
    // keyPassword keystoreProperties['keyPassword']
    // storeFile file(keystoreProperties['storeFile'])
    // storePassword keystoreProperties['storePassword']
    // }
    }
    buildTypes {
    // release {
    // signingConfig signingConfigs.release
    // }
    }
    
  2. Open GDG-DevFest-App-master\lib\utils\devfest.dart file and customise the texts according to your needs. Eg-
        static const String app_name = “Devfest”;
        static const String app_version = “Version 1.0.4”;
        static const int app_version_code = 1;
    
        //*  Texts
        static const String welcomeText = “Welcome to GDG DevFest”;
        static const String descText =
            ‘’’DevFests are community-led, developer events hosted by GDG chapters around the globe focused on community building & learning about Google’s technologies. Each DevFest is inspired by and uniquely tailored to the needs of the developer community and region that hosts it.’’’;
    
        //* ActionTexts
        static const String agenda_text = “Agenda”;
        static const String speakers_text = “Speakers”;
        static const String team_text = “Team”;
        static const String sponsor_text = “Sponsors”;
        static const String faq_text = “FAQ”;
        static const String map_text = “Locate Us”;
    
  3. Open GDG-DevFest-App-master\lib\home\session.dart file and customise the sessions according to your needs. Eg-
        List<Session> sessions = [
            Session(
                sessionId: “1”,
                sessionStartTime: “9:00 AM”,
                sessionTotalTime: “30 Mins”,
                sessionTitle: “DevByte: From Zero to ML on Google Cloud Platform”,
                speakerImage:
                    “https://avatars1.githubusercontent.com/u/12619420?s=400&u=eac38b075e4e4463edfb0f0a8972825cf7803d4c&v=4”,
                speakerName: “Max Saltonstall”,
                speakerDesc: “Cloud Developer Advocate, Google DevByte speaker”,
                track: "cloud"
            ),
        ]
    
  4. Open GDG-DevFest-App-master\lib\home\speaker.dart file and customise the speakers according to your needs. Eg-
        List<Speaker> speakers = [
            Speaker(
                speakerImage:
                    “https://avatars1.githubusercontent.com/u/12619420?s=400&u=eac38b075e4e4463edfb0f0a8972825cf7803d4c&v=4”,
                speakerName: “Pawan Kumar”,
                speakerDesc: “Google Developer Expert, Flutter”,
                speakerSession: “Talk: Getting Started With Flutter For Web”,
                fbUrl: “https://facebook.com/imthepk”,
                githubUrl: “https://github.com/iampawan”,
                linkedinUrl: “https://linkedin.com/in/imthepk”,
                twitterUrl: “https://twitter.com/imthepk”,
            ),
        ]
    
  5. Open GDG-DevFest-App-master\lib\home\team.dart file and customise the teams according to your needs. Eg-
        List<Team> teams = [
            Team(
                name: “Sundar Pichai”,
                desc: “Organizer”,
                contribution: “Google CEO”,
                image:
                    “https://pbs.twimg.com/profile_images/864282616597405701/M-FEJMZ0_400x400.jpg”,
            ),
        ]
    
  6. Open GDG-DevFest-App-master\lib\map\map_page.dart file and customise the lat long according to your needs. Eg-
       static final LatLng myLocation = LatLng(37.42796133580664,       -122.085749655962);
    
  7. Open GDG-DevFest-App-master\lib\sponsors\sponsor_page.dart file and customise the sponsors data according to your needs. Eg-
       SponsorImage(
            imgUrl: “https://devfest.gdgkolkata.org/assets/img/logos/gd.png”,
        )
    

Contributing

Awesome! Contributions of all kinds are greatly appreciated. To help smoothen the process we have a few non-exhaustive guidelines to follow which should get you going in no time.

Using GitHub Issues

  • Feel free to use GitHub issues for questions, bug reports, and feature requests
  • Use the search feature to check for an existing issue
  • Include as much information as possible and provide any relevant resources (Eg. screenshots)
  • For bug reports ensure you have a reproducible test case
    • A pull request with a breaking test would be super preferable here but isn't required

Submitting a Pull Request

  • Squash commits
  • Lint your code with eslint (config provided)
  • Include relevant test updates/additions

GitHub

An App Template For GDG DevFest — Read More
Latest commit to the master branch on 8-27-2019
Download as zip

Flutter Date Picker Library that provides a calendar as a horizontal timeline


DatePickerTimeline

Flutter Date Picker Library that provides a calendar as a horizontal timeline.

How To Use

Import the following package in your dart file
import 'package:date_picker_timeline/date_picker_timeline.dart';

Usage

Use the DatePickerTimeline Widget
    Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          DatePickerTimeline(
            DateTime.now(),
            onDateChange: (date) {
              // New date selected
              print(date.day.toString());
            },
          ),
        ],
    ),
Constructor:
    DatePickerTimeline(
        this.currentDate, {
        Key key,
        this.dateSize = Dimen.dateTextSize,
        this.daySize = Dimen.dayTextSize,
        this.monthSize = Dimen.monthTextSize,
        this.dateColor = AppColors.defaultDateColor,
        this.monthColor = AppColors.defaultMonthColor,
        this.dayColor = AppColors.defaultDayColor,
        this.selectionColor = AppColors.defaultSelectionColor,
        this.onDateChange,
      }) : super(key: key);

GitHub

Flutter Date Picker Library that provides a calendar as a horizontal timeline — Read More
Latest commit to the master branch on 9-3-2019
Download as zip


Bottom navigation bar that you can customize with flutter


Bottom Personalized Dot Bar

A bottom navigation bar that you can customize with the options you need, without any limits. You can also customize the appearance of the navigation bar.

Demo example (Mobile)


Demo example (Tablet 1)


Demo example (Tablet 2)


Package overview

  • [x] Drag and Drop your options!
  • [x] Change icon colors
  • [x] Listen to events 'Sort, Insert and Delete'
  • [x] Dynamically change the selected option
  • [x] Custom options
  • [x] Unlimit options
  • [x] Option to define custom item background color
  • [x] And more ...

Getting Started

Add the plugin:

dependencies:
  ...
  bottom_personalized_dot_bar: ^1.0.2
YAML

Import the package

import 'package:bottom_personalized_dot_bar/bottom_personalized_dot_bar.dart';

How to use?

Important! dont use 'bottomNavigationBar' of Scaffold, because it occupies the entire screen, you need to add it inside a Stack.
To add the Options list, you must create BottomPersonalizedDotBarItem, and each must have the unique attribute 'keyItem'.
To modify the selected option, you must update the attribute keyItemSelected of the BottomPersonalizedDotBar
String _itemSelected = 'item-1';
...
..
.
Scaffold(
  body: Stack(
    children: <Widget>[
      .... // Your App Home
      BottomPersonalizedDotBar(
          keyItemSelected: _itemSelected,
          doneText: 'Done',
          settingTitleText: 'Your Menu',
          settingSubTitleText: 'Drag and drop options',
          iconSettingColor: const Color(0xFFFFD201),
          buttonDoneColor: const Color(0xFFFFD500),
          settingSubTitleColor: const Color(0xFFFECE02),
          hiddenItems: <BottomPersonalizedDotBarItem>[
              BottomPersonalizedDotBarItem('item-4', icon: Icons.cloud, name: 'Nube', onTap: (itemSelected) { /* event selected */ }),
              BottomPersonalizedDotBarItem('item-5', icon: Icons.access_alarm, name: 'Alarma', onTap: (itemSelected) { /* event selected */ }),
              BottomPersonalizedDotBarItem('item-6', icon: Icons.message, name: 'Mensaje', onTap: (itemSelected) { /* event selected */ }),
              BottomPersonalizedDotBarItem('item-7', icon: Icons.notifications, name: 'Alerta', onTap: (itemSelected) { /* event selected */ }),
              BottomPersonalizedDotBarItem('item-8', icon: Icons.security, name: 'Seguridad', onTap: (itemSelected) { /* event selected */ }),
              BottomPersonalizedDotBarItem('item-9', icon: Icons.help, name: 'Ayuda', onTap: (itemSelected) { /* event selected */ }),
              BottomPersonalizedDotBarItem('item-10', icon: Icons.settings, name: 'Config.', onTap: (itemSelected) { /* event selected */ }),
          ],
          items: <BottomPersonalizedDotBarItem>[
              BottomPersonalizedDotBarItem('item-1', icon: Icons.sentiment_very_satisfied, name: 'Flutter', onTap: (itemSelected) { /* event selected */ }),
              BottomPersonalizedDotBarItem('item-2', icon: Icons.favorite_border, name: 'Favorito', onTap: (itemSelected) { /* event selected */ }),
              BottomPersonalizedDotBarItem('item-3', icon: Icons.face, name: 'Perfil', onTap: (itemSelected) { /* event selected */ }),
          ],
      ),
    ],
  ),
);
Dart

Customization

BottomPersonalizedDotBar

ATTRIBUTEDESCRIPTION
itemsList of items to be displayed in the navigation bar
hiddenItemsList of items that will be hidden
keyItemSelectedItem key that is selected
widthNavigation bar width
heightNavigation bar height
borderRadiusNavigation bar radius
selectedColorIconSelected Icon color
unSelectedColorIconUnselected Icon color
navigatorBackgroundNavigator Container Background color
settingBackgroundSetting Container Background color (Hidden items)
iconSettingSettings button icon
iconSettingColorSettings button icon color
settingTitleTextSetting Title Text
settingTitleColorSetting Title color
settingSubTitleTextSetting Sub-Title Text
settingSubTitleColorSetting Sub-Title color
doneTextDone button Text
textDoneColorText Done Color
buttonDoneColorButton done color
hiddenItemBackgroundBackground of hidden item
iconHiddenColorIcon Hidden Color
textHiddenColorText Hidden Color
dotColorSelection Indicator Color (Dot
boxShadowShadow of container
onOrderHideItemsEvent when you sort the hidden options, this has as parameter the list of hidden options with the new order. onOrderHideItems: (List<BottomPersonalizedDotBarItem> hiddenItems) { /* Your action */ }
onOrderItemsEvent when ordering browser options, this has as parameter the list of options with the new order onOrderItems: (List<BottomPersonalizedDotBarItem> items) { /* Your action */ }
onAddItemEvent when you add a new option to the navigation bar, this has as parameters the item you add and the list of options. onAddItem: (BottomPersonalizedDotBarItem itemAdd, List<BottomPersonalizedDotBarItem> items) { /* Your action */ }
onRemoveItemEvent when you delete an option from the navigation bar, this has as parameters the element to delete and the list of hidden options. onRemoveItem: (BottomPersonalizedDotBarItem itemRemove, List<BottomPersonalizedDotBarItem> hiddenItems) { /* Your action */ }

BottomPersonalizedDotBarItem

ATTRIBUTEDESCRIPTION
keyItemUnique key
iconItem icon
nameItem name
onTapEvent with you press the item. onTap: (String keyItem) { /* Your action */ }

GitHub

Bottom Personalized Dot Bar — Read More
Latest commit to the master branch on 8-23-2019
Download as zip