Flutter makes it easy and fast to build beautiful apps for mobile and beyond

Overview

Flutter logo

Build Status - Cirrus Discord badge Twitter handle

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 and breaking changes, follow the [email protected] mailing list or see the breaking changes page.

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.

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 on both iOS and Android.

Reflectly hero image

Fast results

Flutter is fast. It's powered by the same hardware-accelerated 2D graphics library that underpins Chrome and Android: Skia. 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, as well as JavaScript for the web and Intel x64 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) but includes editor plug-ins for both Visual Studio Code and IntelliJ / Android Studio. Flutter provides thousands of packages to speed your development, regardless of your target platform. And accessing other native code is easy, with support for both FFI and 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.

Comments
  • [flutter_tools] 404 downloading canvaskit bundle if FLUTTER_STORAGE_BASE_URL is set to the default

    [flutter_tools] 404 downloading canvaskit bundle if FLUTTER_STORAGE_BASE_URL is set to the default

    In https://github.com/flutter/flutter/pull/94137, the remote cloud path for the CIPD path (used to download the canvaskit bundle) can be overridden by the FLUTTER_STORAGE_BASE_URL env var. This was to allow maintainers of flutter artifact mirrors to include the canvaskit bundle in their mirror (https://github.com/flutter/flutter/issues/92357). However, if this env var is set to the default value, which is https://storage.googleapis.com, this will be the wrong namespace for cipd artifacts, which should be at https://chrome-infra-packages.appspot.com/dl.

    I think the ideal solution here would be to publish the canvaskit bundle flutter depends to our own storage bucket, and not CIPD, so that it can be treated like any other engine artifact.

    tool platform-web P4 
    opened by christopherfujino 1
  • Crash Release Android x86

    Crash Release Android x86

    This bug is reproducible when you generate the app using in release mode and you open it in an x86 or arm32 emulator

    If you are having issues opening an app on your x86 or arm32 emulator, you may be seeing the following error message: "{AppName} consistently crashes". This may be caused by the fact that Flutter does not support x86 files, as mentioned in this link: https://docs.flutter.dev/deployment/android#what-are-the-supported-target-architectures. According to the documentation, Flutter currently does not offer support for generating x86 files for Android (see Issue 9253).

    This can be a particularly problematic when you are trying to use packages that depend on resources such as the camera or MLKit. To resolve this issue, you can edit the 'build.grandle' file in the 'app' folder and add the following lines to prevent the generation of x86 files:

       defaultConfig {
            ndk {
                abiFilters 'armeabi-v7a','arm64-v8a','x86_64'
            }
        }
    

    This should help resolve the issue and allow you to open the app on the emulator without errors. It is important to remember that Flutter currently only supports the armeabi-v7a (ARM 32-bit), arm64-v8a (ARM 64-bit), and x86-64 (x86 64-bit) target architectures. Therefore, when editing the 'build.grandle' file, it is important to ensure that you are only including these architectures.

    opened by rod-moraes 0
  • HardwareKeyboard problem with windows app

    HardwareKeyboard problem with windows app

    I get the following exception after typing text in textinput in a flutter windows app:

    ======== Exception caught by services library ====================================================== The following assertion was thrown during a platform message callback: A KeyRepeatEvent is dispatched, but the state shows that the physical key is not pressed. If this occurs in real application, please report this bug to Flutter. If this occurs in unit tests, please ensure that simulated events follow Flutter's event model as documented in HardwareKeyboard. This was the event: KeyRepeatEvent#7e93e(physicalKey: PhysicalKeyboardKey#700e1(usbHidUsage: "0x000700e1", debugName: "Shift Left"), logicalKey: LogicalKeyboardKey#00102(keyId: "0x200000102", keyLabel: "Shift Left", debugName: "Shift Left"), character: null, timeStamp: 478:41:15.438993) 'package:flutter/src/services/hardware_keyboard.dart': Failed assertion: line 432 pos 16: '_pressedKeys.containsKey(event.physicalKey)'

    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.md

    When the exception was thrown, this was the stack: #2 HardwareKeyboard._assertEventIsRegular. (package:flutter/src/services/hardware_keyboard.dart:432:16) #3 HardwareKeyboard._assertEventIsRegular (package:flutter/src/services/hardware_keyboard.dart:443:6) #4 HardwareKeyboard.handleKeyEvent (package:flutter/src/services/hardware_keyboard.dart:535:5) #5 KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:881:37) #6 BasicMessageChannel.setMessageHandler. (package:flutter/src/services/platform_channel.dart:197:49) #7 _DefaultBinaryMessenger.setMessageHandler. (package:flutter/src/services/binding.dart:387:35) #8 _invoke2 (dart:ui/hooks.dart:186:13) #9 _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5) #10 _Channel.push (dart:ui/channel_buffers.dart:132:31) #11 ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17) #12 PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:599:22) #13 _dispatchPlatformMessage (dart:ui/hooks.dart:89:31) (elided 2 frames from class _AssertionError)

    Unable to parse JSON message: The document is empty.

    ======== Exception caught by services library ====================================================== The following assertion was thrown during a platform message callback: A KeyRepeatEvent is dispatched, but the state shows that the physical key is not pressed. If this occurs in real application, please report this bug to Flutter. If this occurs in unit tests, please ensure that simulated events follow Flutter's event model as documented in HardwareKeyboard. This was the event: KeyRepeatEvent#7e93e(physicalKey: PhysicalKeyboardKey#700e1(usbHidUsage: "0x000700e1", debugName: "Shift Left"), logicalKey: LogicalKeyboardKey#00102(keyId: "0x200000102", keyLabel: "Shift Left", debugName: "Shift Left"), character: null, timeStamp: 478:41:15.438993) 'package:flutter/src/services/hardware_keyboard.dart': Failed assertion: line 432 pos 16: '_pressedKeys.containsKey(event.physicalKey)'

    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.md

    When the exception was thrown, this was the stack: #2 HardwareKeyboard._assertEventIsRegular. (package:flutter/src/services/hardware_keyboard.dart:432:16) #3 HardwareKeyboard._assertEventIsRegular (package:flutter/src/services/hardware_keyboard.dart:443:6) #4 HardwareKeyboard.handleKeyEvent (package:flutter/src/services/hardware_keyboard.dart:535:5) #5 KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:881:37) #6 BasicMessageChannel.setMessageHandler. (package:flutter/src/services/platform_channel.dart:197:49) #7 _DefaultBinaryMessenger.setMessageHandler. (package:flutter/src/services/binding.dart:387:35) #8 _invoke2 (dart:ui/hooks.dart:186:13) #9 _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5) #10 _Channel.push (dart:ui/channel_buffers.dart:132:31) #11 ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17) #12 PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:599:22) #13 _dispatchPlatformMessage (dart:ui/hooks.dart:89:31) (elided 2 frames from class _AssertionError)

    flutter: Wine Unable to parse JSON message: The document is empty.

    ======== Exception caught by services library ====================================================== The following assertion was thrown during a platform message callback: A KeyRepeatEvent is dispatched, but the state shows that the physical key is not pressed. If this occurs in real application, please report this bug to Flutter. If this occurs in unit tests, please ensure that simulated events follow Flutter's event model as documented in HardwareKeyboard. This was the event: KeyRepeatEvent#7e93e(physicalKey: PhysicalKeyboardKey#700e1(usbHidUsage: "0x000700e1", debugName: "Shift Left"), logicalKey: LogicalKeyboardKey#00102(keyId: "0x200000102", keyLabel: "Shift Left", debugName: "Shift Left"), character: null, timeStamp: 478:41:15.438993) 'package:flutter/src/services/hardware_keyboard.dart': Failed assertion: line 432 pos 16: '_pressedKeys.containsKey(event.physicalKey)'

    Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.md

    When the exception was thrown, this was the stack: #2 HardwareKeyboard._assertEventIsRegular. (package:flutter/src/services/hardware_keyboard.dart:432:16) #3 HardwareKeyboard._assertEventIsRegular (package:flutter/src/services/hardware_keyboard.dart:443:6) #4 HardwareKeyboard.handleKeyEvent (package:flutter/src/services/hardware_keyboard.dart:535:5) #5 KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:881:37) #6 BasicMessageChannel.setMessageHandler. (package:flutter/src/services/platform_channel.dart:197:49) #7 _DefaultBinaryMessenger.setMessageHandler. (package:flutter/src/services/binding.dart:387:35) #8 _invoke2 (dart:ui/hooks.dart:186:13) #9 _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5) #10 _Channel.push (dart:ui/channel_buffers.dart:132:31) #11 ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17) #12 PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:599:22) #13 _dispatchPlatformMessage (dart:ui/hooks.dart:89:31) (elided 2 frames from class _AssertionError)

    Flutter doctor:

    [√] Flutter (Channel stable, 3.3.5, on Microsoft Windows [Version 10.0.19044.2364], locale de-DE) • Flutter version 3.3.5 on channel stable at C:\SDKs\flutter_latest\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision d9111f6402 (3 months ago), 2022-10-19 12:27:13 -0700 • Engine revision 3ad69d7be3 • Dart version 2.18.2 • DevTools version 2.15.0

    opened by chrisDK1977 0
  • Material 3 App bar icons don't use app bar icon theme data color

    Material 3 App bar icons don't use app bar icon theme data color

    In Material 3, when setting appBarTheme.actionsIconTheme or appBarTheme.iconTheme overrides, the color values will be overridden by any iconButtonTheme also present in the theme.

    This means that users cannot set different app-wide theme overrides for app bar leading and trailing IconButton widgets, which would be expected from the names of actionsIconTheme/iconTheme. While users can provide their own leading/trailing widgets, the app bar itself constructs menu, back and close IconButtons.

    This is due to the app bar using IconButton widgets, which defer to Theme.iconButtonTheme for color properties in M3. I think the app bar IconButtons need to have a local override which prioritises appBarTheme icon theme values.

    Example at https://dartpad.dev/?id=d9b90b67d6bc18b09b9309c09080355a&channel=beta

    This only occurs in Material 3 (try commenting out useMaterial3 in example above).

    f: material design 
    opened by esouthren 0
  • [url_launcher] Convert to Pigeon

    [url_launcher] Convert to Pigeon

    Part of https://github.com/flutter/flutter/issues/117844

    • [ ] url_launcher_android
    • [ ] url_launcher_ios
    • [ ] url_launcher_linux - Blocked on https://github.com/flutter/flutter/issues/73740
    • [ ] url_launcher_macos - likely blocked on https://github.com/flutter/flutter/issues/112483
    • [ ] url_launcher_windows
    team plugin p: first party p: url_launcher P4 
    opened by stuartmorgan 0
Owner
Flutter
Flutter is Google's UI toolkit for building beautiful, natively compiled applications for mobile, web, desktop, and embedded devices from a single codebase.
Flutter
flutter_thrio makes it easy and fast to add flutter to existing mobile applications, and provide a simple and consistent navigator APIs.

本仓库不再维护,可移步新仓库 https://github.com/flutter-thrio/flutter_thrio 中文文档 问题集 QQ 群号码:1014085473 The Navigator for iOS, Android, Flutter. Version 0.2.2 requir

Hellobike 732 Dec 5, 2022
Widgets for Digital Health - Use the Flutter(tm) SDK to build healthcare apps fast.

Faiadashu™ FHIRDash — Widgets for Digital Health Mission Build beautiful healthcare apps fast — use the Flutter™ SDK and follow the HL7® FHIR® standar

Tilo 22 Dec 19, 2022
Github-apps-flutter - Github Apps Build Using bloc 8.0 and Github API

Github_apps Inspiration This app is made to build using bloc 8.0 and github API.

Irvan Lutfi Gunawan 18 Apr 14, 2022
Easily build your Widgets, Avoid parenthesis nesting, easy to build UI, A little like swift-ui.

tenon_mortise Easily build your Widgets, Avoid parenthesis nesting, easy to build UI, A little like swift-ui. Getting Started Usage To use this plugin

JieLiu 4 Dec 15, 2022
Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.

supabase_flutter Flutter package for Supabase. What is Supabase Supabase is an open source Firebase alternative. We are a service to: listen to databa

Supabase 251 Jan 7, 2023
Nexus is a state management library that makes it easy to create and consume your application's reactive data to the user interface.

Nexus ?? Nexus is a state management library that makes it easy to create and consume your application's reactive data to the user interface. With nex

Gor Mkhitaryan 3 Sep 7, 2022
Toor makes service locators compile-time safe and easy to manage

?? What is Toor Toor makes service locators compile-time safe and easy to manage. ?? Getting Started Define your dependencies somewhere in the project

Arshak Aghakaryan 5 Jul 25, 2022
🙌🏾 This package makes it easy to use the Mono connect widget in a flutter project

Flutter Mono ** This is an unofficial SDK for flutter This package makes it easy to use the Mono connect widget in a flutter project. ?? Screen Shots

Chiziaruhoma Ogbonda 12 Dec 20, 2022
This library provides a customizable Flutter widget that makes it easy to display text in the middle of a Divider.

1. About 1.1. Introduction 1.1.1. Install Library 1.1.2. Import It 1.1.3. Use TextDivider 1.2. Details 1.2.1. Customization Options 1.2.2. Horizontal

Kato Shinya 2 Feb 9, 2022
A Flutter tool that makes golden testing easy.

???? Alchemist Developed with ?? by Very Good Ventures ?? and Betterment ☀️ . A Flutter tool that makes golden testing easy. Alchemist is a Flutter pa

Betterment 210 Dec 12, 2022
A library that makes it easy for you to create your own custom wizard.

Flutter Wizard Author: Jop Middelkamp A library that makes it easy for you to create your custom wizard. You'll have 100% control over the appearance

Baseflow 13 Dec 2, 2022
The flutter_ibm_watson makes it easy to integrate IBM Watson

Flutter Ibm Watson Installation Add this to your package's pubspec.yaml file: dependencies: flutter_ibm_watson: ^0.0.1 You can install packages fro

Victor Alfonso Rodas Oña 27 Nov 4, 2022
Dart package to which makes data communication easy among different modules of your application.

LiveStream - Dart LiveStream is a data holder class which can observe change of data in real-time and emit values too. Here's emitter subscriber patte

Shreyas Patil 75 Sep 28, 2022
Flet enables developers to easily build realtime web, mobile and desktop apps in Python. No frontend experience required.

Flet Flet is a framework that enables you to easily build realtime web, mobile and desktop apps in your favorite language and securely share them with

Flet 3.6k Jan 9, 2023
Flet enables developers to easily build realtime web, mobile and desktop apps in Ruby. No frontend experience required

Flet If bundler is not being used to manage dependencies, install the gem by executing: $ gem install flet Flet Flet is a framework that enables you

AdamMusa 29 Jan 3, 2023
Build native mobile apps with Flutter

Build Native Mobile Apps with Flutter This repo has been archived and is no longer maintained This repo contains code for Build Native Mobile Apps wit

Flutter 1.4k Aug 16, 2022
Just learning to build mobile apps with flutter :)

learning-flutter clickometro Clickômetro. A click counter. demo-clickometro.mp4 In this one, I've followed the Flutter Get Started guide, adn then add

Luis Felipe Santos do Nascimento 6 May 3, 2022
An easy to configure sidebar widget for your flutter mobile/web apps

flutter_sidebar An easy to configure sidebar widget for your flutter mobile/web apps See also: scaffold_responsive Usage import 'package:flutter_sideb

Tushar Sadhwani 15 Sep 27, 2022