blob: 0c6095fecff76d9cb1b9fc305b7e5cf58c0bb692 [file] [log] [blame] [view]
Greg Spencere60087a2018-08-07 13:41:33 -07001# <img src="https://flutter.io/images/flutter-mark-square-100.png" alt="Flutter" width="40" height="40" /> Flutter [![Join Gitter Chat Channel -](https://badges.gitter.im/flutter/flutter.svg)](https://gitter.im/flutter/flutter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Ian Hickson140d50f2018-08-12 00:14:13 -07002[![Build Status - Cirrus](https://api.cirrus-ci.com/github/flutter/flutter.svg)](https://cirrus-ci.com/github/flutter/flutter/master)
Greg Spencere60087a2018-08-07 13:41:33 -07003[![Coverage Status -](https://coveralls.io/repos/github/flutter/flutter/badge.svg?branch=master)](https://coveralls.io/github/flutter/flutter?branch=master)
Ian Hickson48793292016-03-23 21:06:37 -07004
Michael Thomsen7f0f9382018-08-27 11:11:14 +02005
6# Build beautiful native apps in record time
7
Shams Zakhour3c624f82018-08-23 19:23:02 -07008Flutter is Googles mobile app SDK for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.
Adam Barth7b0bbdb2015-10-30 11:16:58 -07009
Filip Hracek53e23532017-07-12 10:12:25 -070010### Documentation
Adam Barth7b0bbdb2015-10-30 11:16:58 -070011
Filip Hracek53e23532017-07-12 10:12:25 -070012* **Main site: [flutter.io][]**
Shams Zakhour3c624f82018-08-23 19:23:02 -070013* [Install](https://flutter.io/get-started/install/)
14* [Get started](https://flutter.io/get-started/)
Ahmed Abu Eldahab89c5ace2018-10-04 18:26:06 +020015* [Changelog](https://github.com/flutter/flutter/wiki/Changelog)
Kathy Walrath72d86f92018-09-20 13:15:51 -070016* [Contribute](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md#contributing-to-flutter)
Adam Barth576795d2015-11-08 21:33:00 -080017
Filip Hracek53e23532017-07-12 10:12:25 -070018## Fast development
Adam Barth7b0bbdb2015-10-30 11:16:58 -070019
Filip Hracek53e23532017-07-12 10:12:25 -070020Flutter's <em>hot reload</em> helps you quickly
21and easily experiment, build UIs, add features, and fix
Yun34238f52018-07-03 15:50:58 -070022bugs. Experience sub-second reload times,
Filip Hracek53e23532017-07-12 10:12:25 -070023without losing state, on
24emulators, simulators, and hardware for iOS
25and Android.
26
Michael Thomsen7f0f9382018-08-27 11:11:14 +020027<img src="https://raw.githubusercontent.com/flutter/website/master/src/images/intellij/hot-reload.gif" alt="Make a change in your code, and your app changes instantly.">
Filip Hracek39d2deb2017-07-12 10:58:12 -070028
Michael Thomsen7f0f9382018-08-27 11:11:14 +020029## Expressive and flexible UI
30Quickly ship features with a focus on native end-user experiences.
31Layered architecture allows full customization, which results in incredibly
32fast rendering and expressive and flexible designs.
33
Filip Hracek53e23532017-07-12 10:12:25 -070034
35Delight your users with Flutter's built-in
36beautiful Material Design and
37Cupertino (iOS-flavor) widgets, rich motion APIs,
38smooth natural scrolling, and platform awareness.
39
Günter Zöchbauerbd0b6662018-08-23 08:46:56 +020040[<img src="https://github.com/flutter/website/blob/master/src/images/homepage/screenshot-1.png" width="270" height="480" alt="Brand-first shopping design" align="left">](https://github.com/flutter/flutter/tree/master/examples/flutter_gallery/lib/demo/animation)
41[<img src="https://github.com/flutter/website/blob/master/src/images/homepage/screenshot-2.png" width="270" height="480" alt="Fitness app design">](https://github.com/flutter/posse_gallery)
Filip Hracek53e23532017-07-12 10:12:25 -070042
Günter Zöchbauerbd0b6662018-08-23 08:46:56 +020043[<img src="https://github.com/flutter/website/blob/master/src/images/homepage/screenshot-3.png" width="270" height="480" alt="Contact app design" align="left">](https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/contacts_demo.dart)
44[<img src="https://github.com/flutter/website/blob/master/src/images/homepage/ios-friendlychat.png" width="270" height="480" alt="iOS chat app design">](https://codelabs.developers.google.com/codelabs/flutter/)
Filip Hracek53e23532017-07-12 10:12:25 -070045
46Browse the <a href="https://flutter.io/widgets/">widget catalog</a>.
47
48## Modern, reactive framework
49
50Easily compose your UI with Flutter's
51modern functional-reactive framework and
52rich set of platform, layout, and foundation widgets.
53Solve your tough UI challenges with
54powerful and flexible APIs for 2D, animation, gestures,
55effects, and more.
56
57```dart
58class CounterState extends State<Counter> {
59 int counter = 0;
60
61 void increment() {
62 // Tells the Flutter framework that state has changed,
63 // so the framework can run build() and update the display.
64 setState(() {
65 counter++;
66 });
67 }
68
69 Widget build(BuildContext context) {
70 // This method is rerun every time setState is called.
71 // The Flutter framework has been optimized to make rerunning
72 // build methods fast, so that you can just rebuild anything that
73 // needs updating rather than having to individually change
74 // instances of widgets.
Rui Kowaseb9f6e2c2018-10-04 01:11:29 +090075 return Row(
Filip Hracek53e23532017-07-12 10:12:25 -070076 children: <Widget>[
Rui Kowaseb9f6e2c2018-10-04 01:11:29 +090077 RaisedButton(
Filip Hracek53e23532017-07-12 10:12:25 -070078 onPressed: increment,
Rui Kowaseb9f6e2c2018-10-04 01:11:29 +090079 child: Text('Increment'),
Filip Hracek53e23532017-07-12 10:12:25 -070080 ),
Rui Kowaseb9f6e2c2018-10-04 01:11:29 +090081 Text('Count: $counter'),
Filip Hracek53e23532017-07-12 10:12:25 -070082 ],
83 );
84 }
85}
86```
87
88Browse the <a href="https://flutter.io/widgets/">widget catalog</a>
89and learn more about the
90<a href="https://flutter.io/widgets-intro/">functional-reactive framework</a>.
91
92## Access native features and SDKs
93
94Make your app come to life
95with platform APIs, 3rd party SDKs,
96and native code.
Mikkel Nygaard Ravne2988ad2017-12-21 11:33:22 +010097Flutter lets you reuse your existing Java/Kotlin and ObjC/Swift code,
98and access native features and SDKs on Android and iOS.
Filip Hracek53e23532017-07-12 10:12:25 -070099
100Accessing platform features is easy. Here is a snippet from our <a href="https://github.com/flutter/flutter/tree/master/examples/platform_channel">interop example</a>:
101
102```dart
Alexandre Ardhuin936dea22018-10-17 08:09:29 +0200103Future<void> getBatteryLevel() async {
Filip Hracek53e23532017-07-12 10:12:25 -0700104 var batteryLevel = 'unknown';
105 try {
106 int result = await methodChannel.invokeMethod('getBatteryLevel');
107 batteryLevel = 'Battery level: $result%';
108 } on PlatformException {
109 batteryLevel = 'Failed to get battery level.';
110 }
111 setState(() {
112 _batteryLevel = batteryLevel;
113 });
114}
115```
116
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700117Learn how to use <a href="https://flutter.io/using-packages/">packages</a>, or
Filip Hracek53e23532017-07-12 10:12:25 -0700118write <a href="https://flutter.io/platform-channels/">platform channels</a>,
119to access native code, APIs, and SDKs.
120
121## Unified app development
122
123Flutter has the tools and libraries to help you easily
124bring your ideas to life on iOS and Android.
125If you don't have any mobile development experience, Flutter
126is an easy and fast way to build beautiful mobile apps.
127If you are an experienced iOS or Android developer,
128you can use Flutter for your views and leverage much of your
Mikkel Nygaard Ravne2988ad2017-12-21 11:33:22 +0100129existing Java/Kotlin/ObjC/Swift investment.
Filip Hracek53e23532017-07-12 10:12:25 -0700130
131### Build
132
133* **Beautiful app UIs**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700134 * Rich 2D GPU-accelerated APIs
135 * Reactive framework
136 * Animation/motion APIs
137 * Material Design and iOS widgets
Filip Hracek53e23532017-07-12 10:12:25 -0700138* **Fluid coding experience**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700139 * Sub-second, stateful hot reload
140 * IntelliJ: refactor, code completion, etc
141 * Dart language and core libs
142 * Package manager
Filip Hracek53e23532017-07-12 10:12:25 -0700143* **Full-featured apps**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700144 * Interop with mobile OS APIs & SDKs
145 * Gradle/Java/Kotlin
146 * Cocoapods/ObjC/Swift
Filip Hracek53e23532017-07-12 10:12:25 -0700147
148### Optimize
149
150* **Test**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700151 * Unit testing
152 * Integration testing
153 * On-device testing
Filip Hracek53e23532017-07-12 10:12:25 -0700154* **Debug**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700155 * IDE debugger
156 * Web-based debugger
157 * async/await aware
158 * Expression evaluator
Filip Hracek53e23532017-07-12 10:12:25 -0700159* **Profile**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700160 * Timeline
161 * CPU and memory
162 * In-app perf charts
Filip Hracek53e23532017-07-12 10:12:25 -0700163
164### Deploy
165
166* **Compile**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700167 * Native ARM code
168 * Dead code elimination
Filip Hracek53e23532017-07-12 10:12:25 -0700169* **Distribution**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700170 * App Store
171 * Play Store
Filip Hracek53e23532017-07-12 10:12:25 -0700172
173Learn more about what makes Flutter special in the
174<a href="https://flutter.io/technical-overview/">technical overview</a>.
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700175
Adam Barthc8878782016-10-31 21:53:27 -0700176Join us in our [Gitter chat room](https://gitter.im/flutter/flutter) or join our public mailing list,
Adam Barth7b0bbdb2015-10-30 11:16:58 -0700177[flutter-dev@googlegroups.com](https://groups.google.com/forum/#!forum/flutter-dev).
Filip Hracek53e23532017-07-12 10:12:25 -0700178
179[flutter.io]: https://flutter.io/