A Flutter app that demonstrates how to build a simple app using the SpaceX API created by the Very Good Ventures Team.

Overview

SpaceX Demo

Very Good Ventures

Developed with πŸ’™ by Very Good Ventures πŸ¦„

coverage style: very good analysis License: MIT

A Flutter app that demonstrates how to build a simple app using the SpaceX API created by the Very Good Ventures Team.

This project was created for an event by the Google Developer Student Group of the University of Milan and generated by the Very Good CLI πŸ€–

This project also includes the complete slides for the talk given.


Getting Started πŸš€

This project contains 3 flavors:

  • development
  • staging
  • production

To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:

# Development
$ flutter run --flavor development --target lib/main_development.dart

# Staging
$ flutter run --flavor staging --target lib/main_staging.dart

# Production
$ flutter run --flavor production --target lib/main_production.dart

*SpaceX Demo works on iOS, Android, and Web.


Running Tests πŸ§ͺ

To run all unit and widget tests use the following command:

$ flutter test --coverage --test-randomize-ordering-seed random

To view the generated coverage report you can use lcov.

# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/

# Open Coverage Report
$ open coverage/index.html

Working with Translations 🌐

This project relies on flutter_localizations and follows the official internationalization guide for Flutter.

Adding Strings

  1. To add a new localizable string, open the app_en.arb file at lib/l10n/arb/app_en.arb.
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}
  1. Then add a new key/value and description
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    },
    "helloWorld": "Hello World",
    "@helloWorld": {
        "description": "Hello World Text"
    }
}
  1. Use the new string
import 'package:spacex_demo/l10n/l10n.dart';

@override
Widget build(BuildContext context) {
  final l10n = context.l10n;
  return Text(l10n.helloWorld);
}

Adding Supported Locales

Update the CFBundleLocalizations array in the Info.plist at ios/Runner/Info.plist to include the new locale.

    ...

    <key>CFBundleLocalizationskey>
	<array>
		<string>enstring>
		<string>esstring>
	array>

    ...

Adding Translations

  1. For each supported locale, add a new ARB file in lib/l10n/arb.
β”œβ”€β”€ l10n
β”‚   β”œβ”€β”€ arb
β”‚   β”‚   β”œβ”€β”€ app_en.arb
β”‚   β”‚   └── app_es.arb
  1. Add the translated strings to each .arb file:

app_en.arb

{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}

app_es.arb

{
    "@@locale": "es",
    "counterAppBarTitle": "Contador",
    "@counterAppBarTitle": {
        "description": "Texto mostrado en la AppBar de la pΓ‘gina del contador"
    }
}
Comments
  • feat: add crew_member_repository and api

    feat: add crew_member_repository and api

    Description

    • Added a new package to retrieve SpaceX Crew Members' data. (crew_member_package) --> 100% code coverage
    • Included the corresponding API functionality into the spacex_api package --> 100% code coverage
      • Refactored SpaceXApiClient functionality to reuse apiRequest logic (_apiRequest())

    Type of Change

    • [x] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [x] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    enhancement 
    opened by alefl10 2
  • chore(deps): update dependencies

    chore(deps): update dependencies

    Description

    Update rocket_repository, spacex_api and project dependencies.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [x] πŸ—‘οΈ Chore
    chore 
    opened by robsonsilv4 1
  • docs: update VGV logo

    docs: update VGV logo

    Description

    Updating the VGV logo in the Readme.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [x] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    opened by tomarra 0
  • feat: add crew bloc and ui

    feat: add crew bloc and ui

    Description

    Add new UI features including:

    • New Home Page UI and corresponding tests
    • New Crew Page UI, cubit, and corresponding tests
    • New Crew Member Details UI, cubit, and corresponding tests
    • mockingjay dev package for testing newly added pages' navigation/routing

    Refactor:

    • The previous Home Page into the Rockets Page and its corresponding tests

    Chore:

    • Apply previous PR changes

    Type of Change

    • [x] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [x] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [x] πŸ—‘οΈ Chore
    opened by alefl10 0
  • feat(crew_repo_api): add crew member repository and api functionality

    feat(crew_repo_api): add crew member repository and api functionality

    Description

    • Added a new package to retrieve SpaceX Crew Members' data. (crew_member_package) --> 100% code coverage
    • Included the corresponding API functionality into the spacex_api package --> 100% code coverage
    • Refactored SpaceXApiClient functionality to reuse apiRequest logic (_apiRequest())
    • Added coverage.sh to automate test execution

    This PR replaces a previousPR from a fork.

    Type of Change

    • [x] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [x] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [x] πŸ—‘οΈ Chore
    opened by alefl10 0
  • chore: upgrade dependencies, linter rules & ci configs

    chore: upgrade dependencies, linter rules & ci configs

    Description

    This PR updates all dependencies, linter rules and CI config files.

    It also introduces a minor change to pumpApp that makes using MockNavigators easier.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [x] 🧹 Code refactor
    • [x] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [x] πŸ—‘οΈ Chore
    chore 
    opened by jeroen-meijer 0
  • feat: add new crew UI

    feat: add new crew UI

    Description

    I added new UI features including:

    • New Home Page UI and corresponding tests
    • New Crew Page UI, cubit, and corresponding tests
    • New Crew Member Details UI, cubit, and corresponding tests
    • mockingjay dev package for testing newly added pages' navigation/routing

    I also refactored:

    • The previous Home Page into the Rockets Page and its corresponding tests

    Type of Change

    • [x] ✨ New feature (non-breaking change which adds functionality)
    • [x] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [x] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    opened by alefl10 0
  • chore: add slides

    chore: add slides

    Description

    • chore: add slides

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [X] πŸ—‘οΈ Chore
    opened by felangel 0
  • refactor: use mocktail_image_network

    refactor: use mocktail_image_network

    Description

    • refactor: use mocktail_image_network

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [X] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    opened by felangel 0
  • fix: upgrade mocktail, improve tests

    fix: upgrade mocktail, improve tests

    Description

    This PR fixes a prior mocktail issue.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [x] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    opened by jeroen-meijer 0
  • feat: add rocket details page

    feat: add rocket details page

    Description

    This PR implements adds a rocket details page that displays more info about a selected rocket such as a picture, the full description, first launch date and an activity indicator.

    Type of Change

    • [x] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    opened by jeroen-meijer 0
  • feat: Update Dependencies with new flutter version 3.0.0

    feat: Update Dependencies with new flutter version 3.0.0

    Description

    Update Navigation testing code according to new mockingjay version

    Type of Change

    • [x] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    opened by viralkachhadiya 2
  • Feature: Latest launch

    Feature: Latest launch

    Description

    Just added the latest launch.

    Type of Change

    • [x] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    enhancement 
    opened by ngjoni 4
Owner
Very Good Ventures
A Very Good Flutter Development Consultancy (also @VeryGoodOpenSource)
Very Good Ventures
Instead of a simple counter app, the @FlutterDev team can provide a simple game like the one below.

Instead of a simple counter app, the @FlutterDev team can provide a simple game like the one below. Thanks to the @rive_app team for their easy-to-use animation kit.

Md. Siam 10 Oct 27, 2022
LogiFresh helps you build a login easily with a friendly design, and very flexible for its construction

Login Fresh LogiFresh helps you build a login easily with a friendly design, and very flexible for its construction. Installation Follow the install i

Cristhian HernΓ‘ndez 9 Nov 24, 2022
The objective is to create a simple app using Dart/Flutter, for make a REST API integration with Flutter, using free JSON API

ListView Builder App The objective is to create a simple app using Dart/Flutter, for make a REST API integration with Flutter, using free JSON API: ht

Rafael Tozzo 1 Dec 7, 2022
This is the semester 6 Mobile App Development Course project. So maybe the final project may not make sense ;) but it is a good place to start learning Flutter.

?? Overview MAD-Sem6 is a Mobile Development Course Project that contains Basic ➑️ Medium implementation of different widgets. As a whole it doesn't m

Muhammad Tayyab Asghar 3 Aug 9, 2021
CodeFury 4.0 Submission | Team Re-member | PrepSetGO

PrepSetGo | CodeFury 4.0 Winners Submission by team Re-member that won the 1st Prize in the App Development Category on 03/10/2021. Problem Statement:

Reesha Shenoy 7 Oct 5, 2021
Anime and Manga search app. created using Flutter and Jikan API

AnimSearch AnimSearch an App for searching Anime and Manga created with Flutter with data from Jikan API UI Design UI Design inspired by : Crunchyroll

Ariz Armeidi 56 Jan 6, 2023
A simple fully working weather app with state management build using flutter.

A simple fully working weather app with state management build using flutter.

null 5 Apr 12, 2022
A simple Flutter app created for educational purposes.

flutter_quiz_app A basic quiz application Getting Started This project is a starting point for a Flutter application. A few resources to get you start

Emirhan AydΔ±n 0 Nov 27, 2021
This is a simple quiz app I created for specific use in my church.

flip_quiz_questions A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you star

null 0 Dec 27, 2021
Drishti is a simple mobile application created as a project for YIP KDISC and Google Devs Solution Challenge

Drishti is a simple mobile application created as a project for YIP KDISC and Google Devs Solution Challenge. This app aims to make reporting and spreading the news of accidents and dangers easier and effective.

Friendly Neighbourhood Tekys 1 Nov 29, 2022
A Todo list app, created using flutter

todoey A todo-list application, made using flutter ChangeLog: v 1.7.4 Fixed minor bugs: Blank task was crashing app. v 1.7.3 Added dark mode switch. v

Utkarsh Gupta 28 Dec 16, 2022
It is the Tangram application that I created using flutter.

Tangram App What is a TANGRAM? Tangram is a creative intelligence game on the basis of creating various forms by combining seven geometrically shaped

Onur GOZ 11 Oct 26, 2022
A WhatsApp clone build using Flutter and AWS Amplify DataStore

Whatsapp Clone using Amplify DataStore in Flutter About The Project Built With Flutter AWS Amplify DataStore Getting Started To get a local copy up an

GeekyAnts 35 Jan 4, 2023
Flutter App using the stack overflow questions api which we made using django.

Flutter StackOverflow App Flutter StackOverflow App using the stack overflow questions api which we made using django. Show some ❀️ and star the repo

Pawan Kumar 206 Dec 30, 2022
Note Flutter App with CRUD: Created note app with Firebase Firestore real time storage

Note Flutter App with CRUD: Created note app with Firebase Firestore real time storage

Mustafa KIZILTAY 2 Apr 27, 2022
This is an E-commerce App that you can buy goods, it has no data base so all you see in this app are created as default

This is an E-commerce App that you can buy goods, it has no data base so all you see in this app are created as default. Once I create a server and connect with it, I will create another repository or simply update this one.

Khusan Flutter Dev 2 Feb 10, 2022
To-do list app created with Flutter

To-do list app created with Flutter

Mohamed Amine Benaicha 4 Dec 20, 2021
iOS/Android Reddit app created with Flutter

iOS/Android Reddit app created with Flutter

Matthew Zegar 43 Dec 29, 2022
Flutter Login App created with Bloc/Cubit

cubit_login A Flutter project which is created by Cubit/BLoC and Firebase. The differ from the other bloc login projects, this project has social logi

Alper Efe Şahin 40 Dec 28, 2022