Code Monkey home page Code Monkey logo

put-flutter-to-work's Introduction

Flutter CI Status Discord badge Twitter handle codecov CII Best Practices OpenSSF Scorecard SLSA 1

Flutter is Google's SDK for crafting beautiful, fast user experiences for mobile, web, and desktop from a single codebase. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.

Documentation

For announcements about new releases, follow the [email protected] mailing list. Our documentation also tracks breaking changes across releases.

Terms of service

The Flutter tool may occasionally download resources from Google servers. By downloading or using the Flutter SDK, you agree to the Google Terms of Service: https://policies.google.com/terms

For example, when installed from GitHub (as opposed to from a prepackaged archive), the Flutter tool will download the Dart SDK from Google servers immediately when first run, as it is used to execute the flutter tool itself. This will also occur when Flutter is upgraded (e.g. by running the flutter upgrade command).

About Flutter

We think Flutter will help you create beautiful, fast apps, with a productive, extensible and open development model, whether you're targeting iOS or Android, web, Windows, macOS, Linux or embedding it as the UI toolkit for a platform of your choice.

Beautiful user experiences

We want to enable designers to deliver their full creative vision without being forced to water it down due to limitations of the underlying framework. Flutter's layered architecture gives you control over every pixel on the screen and its powerful compositing capabilities let you overlay and animate graphics, video, text, and controls without limitation. Flutter includes a full set of widgets that deliver pixel-perfect experiences whether you're building for iOS (Cupertino) or other platforms (Material), along with support for customizing or creating entirely new visual components.

Reflectly hero image

Fast results

Flutter is fast. It's powered by hardware-accelerated 2D graphics libraries like Skia (that underpins Chrome and Android) and Impeller. We architected Flutter to support glitch-free, jank-free graphics at the native speed of your device.

Flutter code is powered by the world-class Dart platform, which enables compilation to 32-bit and 64-bit ARM machine code for iOS and Android, JavaScript and WebAssembly for the web, as well as Intel x64 and ARM for desktop devices.

Dart diagram

Productive development

Flutter offers stateful hot reload, allowing you to make changes to your code and see the results instantly without restarting your app or losing its state.

Hot reload animation

Extensible and open model

Flutter works with any development tool (or none at all), and also includes editor plug-ins for both Visual Studio Code and IntelliJ / Android Studio. Flutter provides tens of thousands of packages to speed your development, regardless of your target platform. And accessing other native code is easy, with support for both FFI (on Android, on iOS, on macOS, and on Windows) as well as platform-specific APIs.

Flutter is a fully open-source project, and we welcome contributions. Information on how to get started can be found in our contributor guide.

put-flutter-to-work's People

Contributors

beatricemitchell avatar dependabot[bot] avatar domesticmouse avatar drewroengoogle avatar felangel avatar hellohuanlin avatar jan-stepien avatar johnpryan avatar miquelbeltran avatar orestesgaolin avatar parlough avatar redbrogdon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

put-flutter-to-work's Issues

Adapt some aspects of coding style to match flutter/samples

There are a few small differences between the coding style used in production apps and the style Flutter DevRel uses in their samples. I just wanted to call out a couple here and ask that they be incorporated into Flutter module.

  • The DevRel team has a standard analysis_options setup that we use across samples. We'd like for this project to match.
  • We generally avoid using underscores to represent unused parameters. This is so that readers learning Flutter's APIs from the code can see what the purpose of the parameter is, even if it's unused in that particular instance. Right now I only see one parameter that's been done this way. Renaming that one to "context" can help readers understand that BlocProvider uses a context when creating its Bloc or Cubit at a particular spot in the tree.

It's possible there may be a few more as the project advances. I'll try to call them out as early as possible, and y'all should feel free to ask any questions you have.

3: Data Layer

Mock data layer, enabled by default

  • Firebase data layer, in lieu of mock data layer, that works out of the box once Firebase credentials are added

Deliverables:

  • Code related to mock and Firebase data layers

Detailed task is:
#14

3.1 - Implement Data Layer

We need to have a Firebase data layer that starts working immediately after the user updates the Firebase credentials. It will be mocked until those are changed.

Child Tasks: #45, #35

1.2 - Define App NPS Required Feature Set

The App NPS will have

  1. An initial rating button panel - 1 through 5
  2. A secondary suite of buttons that appear after the first selection
  3. A "Report An Issue" button
  4. A submit button
  5. A Thank You screen after submission

6.4 - Validate CI/CD For User To Build Module

  • The Flutter module should be built by CD in such a way that it's ready to be imported into native applications as a library, with no need for the Flutter SDK or source code on the consuming machine.

  • Builds of the application should be produced as GitHub Actions artifacts and links to the latest copies should be in the project README for easy access.

5: Flutter Module Development

Develop NPS UX

  • Integrate with mock and firebase data layers

  • Manage native app integration and lifecycle

  • App build system to make Flutter module easily integrated to native container apps

  • There are Android docs and iOS docs for this approach, and the web application can simply include the module in a subdirectory

Deliverables:

  • Flutter NPS module, easily imported as AAR/framework/other method

Detailed task is:
#18

build: cannot launch module on iOS

Following the instructions in the README and running the app on iOS results in the following error when starting the Flutter Engine

2022-04-18 15:30:29.359139-0500 newsfeed_app[10857:1383976] Failed to find assets path for "Frameworks/App.framework/flutter_assets"
2022-04-18 15:30:29.359564-0500 newsfeed_app[10857:1383976] Metal API Validation Enabled
2022-04-18 15:30:29.408371-0500 newsfeed_app[10857:1384246] [VERBOSE-2:engine.cc(197)] Engine run configuration was invalid.
2022-04-18 15:30:29.408579-0500 newsfeed_app[10857:1384246] [VERBOSE-2:shell.cc(580)] Could not launch engine with configuration.
2022-04-18 15:30:29.497715-0500 newsfeed_app[10857:1384272] flutter: Observatory listening on http://127.0.0.1:49572/-IguXrqyB5Y=/

7.2 - Technical Overview For README

Documentation provided with the module should instruct users on how to quickly create a Firebase project, enable Cloud Firestore, and paste their credentials into the code.

Documentation for Flutter module, including how to build the app, package the module, and customize the module

Documentation for each native container app, including where in the project the module is invoked

Linked Tasks: #36, #37, #38

6: Github Deployment & Actions CI/CD

All app code deployed in a Github repo

CI/CD that executes unit and widget tests for Flutter module

CI/CD that executes at least a few tests for each native container app

CI/CD to build Flutter module for easy import into Native applications

  • The Flutter module should be built by CD in such a way that it's ready to be imported into native applications as a library, with no need for the Flutter SDK or source code on the consuming machine.

  • Builds of the application should be produced as GitHub Actions artifacts and links to the latest copies should be in the project README for easy access.

Deliverables:

  • CI/CD scripts for tests

  • CI/CD scripts for builds

Detailed tasks are:
#19, #20, #21, & #22

4: Native Container App

Same basic feature set for container app via:

  • Native Android development

  • Native iOS development

  • Native Web app development

Deliverables:

  • Native Android container app code
  • Native iOS container app code
  • Web container app code

Detailed tasks are:
#15, #16, & #17

5.1 - Validate Development of NPS Module

We need to create the NPS Module that:

  • Is integrated with the mock and Firebase data layers

  • Manages native app integration and lifecycle

  • Uses an app build system to make Flutter module easily integrated to native container apps

Note: There are Android docs and iOS docs for this approach, and the web application can simply include the module in a subdirectory

7.1 - Project README

Project README that explains what the project is, what the purpose is, and how to use it.

1: Discovery

Define native container app minimum required feature set

  • Native implementation of the default Flutter counter app

  • The UI for the app will be appropriately adapted to the platform on which it's designed to run

  • App will have a clear "moment" to invoke the Flutter NPS module

Define app NPS required feature set

Define module native integration approach

  • Play around with what's possible, come up with options for how to proceed with actual coding.

Deliverables:
Required features and delivery success criteria

Detailed Tasks are:
#8, #9, & #10

2: Design

UX / UI designs for NPS capture

  • Capture screen

  • Loading state

  • Completion state

UX / UI designs for native container apps’ UX

Google review and design approval

Deliverables:

  • UI design for the module

  • UI design for each native container app

Detailed tasks are:
#11, #12, and & #13

7: Documentation

README explaining project and its purpose

Instructions to build, run, and customize

Documentation provided with the module should instruct users on how to quickly create a Firebase project, enable Cloud Firestore, and paste their credentials into the code.

Documentation for Flutter module, including how to build the app, package the module, and customize the module

Documentation for each native container app, including where in the project the module is invoked

Marketing blog post

Deliverables:

  • README documentation

  • Source code documentation

  • Marketing blog post

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.