blob: 85a44f9457bdad748422a346abadb63931edf702 [file] [log] [blame] [view]
Filip Hracek53e23532017-07-12 10:12:25 -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) [![Build Status - Travis](https://travis-ci.org/flutter/flutter.svg?branch=master)](https://travis-ci.org/flutter/flutter) [![Build Status - AppVeyor](https://ci.appveyor.com/api/projects/status/meyi9evcny64a2mg/branch/master?svg=true)](https://ci.appveyor.com/project/flutter/flutter/branch/master) [![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 -07002
Nicholas Rebhunab56c632018-03-16 00:29:49 -07003A new mobile app SDK to help developers and designers build modern mobile apps for iOS and Android. Flutter is an open-source project currently in beta.
Adam Barth7b0bbdb2015-10-30 11:16:58 -07004
Filip Hracek53e23532017-07-12 10:12:25 -07005### Documentation
Adam Barth7b0bbdb2015-10-30 11:16:58 -07006
Filip Hracek53e23532017-07-12 10:12:25 -07007* **Main site: [flutter.io][]**
8* [Install](https://flutter.io/setup/)
9* [Get started](https://flutter.io/getting-started/)
10* [Contribute](CONTRIBUTING.md)
Adam Barth576795d2015-11-08 21:33:00 -080011
Filip Hracek53e23532017-07-12 10:12:25 -070012## Fast development
Adam Barth7b0bbdb2015-10-30 11:16:58 -070013
Filip Hracek53e23532017-07-12 10:12:25 -070014Flutter's <em>hot reload</em> helps you quickly
15and easily experiment, build UIs, add features, and fix
16bugs faster. Experience sub-second reload times,
17without losing state, on
18emulators, simulators, and hardware for iOS
19and Android.
20
Filip Hracek39d2deb2017-07-12 10:58:12 -070021<img src="https://user-images.githubusercontent.com/919717/28131204-0f8c3cda-66ee-11e7-9428-6a0513eac75d.gif" alt="Make a change in your code, and your app is changed instantly.">
22
Filip Hracek53e23532017-07-12 10:12:25 -070023## Expressive, beautiful UIs
24
25Delight your users with Flutter's built-in
26beautiful Material Design and
27Cupertino (iOS-flavor) widgets, rich motion APIs,
28smooth natural scrolling, and platform awareness.
29
Michael Thomsenfd516d92018-01-09 19:37:59 +010030[<img src="https://github.com/flutter/website/blob/master/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)
31[<img src="https://github.com/flutter/website/blob/master/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 -070032
Michael Thomsenfd516d92018-01-09 19:37:59 +010033[<img src="https://github.com/flutter/website/blob/master/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)
34[<img src="https://github.com/flutter/website/blob/master/images/homepage/ios-friendlychat.png" width="270" height="480" alt="iOS chat app design">](https://codelabs.developers.google.com/codelabs/flutter-firebase)
Filip Hracek53e23532017-07-12 10:12:25 -070035
36Browse the <a href="https://flutter.io/widgets/">widget catalog</a>.
37
38## Modern, reactive framework
39
40Easily compose your UI with Flutter's
41modern functional-reactive framework and
42rich set of platform, layout, and foundation widgets.
43Solve your tough UI challenges with
44powerful and flexible APIs for 2D, animation, gestures,
45effects, and more.
46
47```dart
48class CounterState extends State<Counter> {
49 int counter = 0;
50
51 void increment() {
52 // Tells the Flutter framework that state has changed,
53 // so the framework can run build() and update the display.
54 setState(() {
55 counter++;
56 });
57 }
58
59 Widget build(BuildContext context) {
60 // This method is rerun every time setState is called.
61 // The Flutter framework has been optimized to make rerunning
62 // build methods fast, so that you can just rebuild anything that
63 // needs updating rather than having to individually change
64 // instances of widgets.
65 return new Row(
66 children: <Widget>[
67 new RaisedButton(
68 onPressed: increment,
69 child: new Text('Increment'),
70 ),
71 new Text('Count: $counter'),
72 ],
73 );
74 }
75}
76```
77
78Browse the <a href="https://flutter.io/widgets/">widget catalog</a>
79and learn more about the
80<a href="https://flutter.io/widgets-intro/">functional-reactive framework</a>.
81
82## Access native features and SDKs
83
84Make your app come to life
85with platform APIs, 3rd party SDKs,
86and native code.
Mikkel Nygaard Ravne2988ad2017-12-21 11:33:22 +010087Flutter lets you reuse your existing Java/Kotlin and ObjC/Swift code,
88and access native features and SDKs on Android and iOS.
Filip Hracek53e23532017-07-12 10:12:25 -070089
90Accessing 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>:
91
92```dart
93Future<Null> getBatteryLevel() async {
94 var batteryLevel = 'unknown';
95 try {
96 int result = await methodChannel.invokeMethod('getBatteryLevel');
97 batteryLevel = 'Battery level: $result%';
98 } on PlatformException {
99 batteryLevel = 'Failed to get battery level.';
100 }
101 setState(() {
102 _batteryLevel = batteryLevel;
103 });
104}
105```
106
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700107Learn how to use <a href="https://flutter.io/using-packages/">packages</a>, or
Filip Hracek53e23532017-07-12 10:12:25 -0700108write <a href="https://flutter.io/platform-channels/">platform channels</a>,
109to access native code, APIs, and SDKs.
110
111## Unified app development
112
113Flutter has the tools and libraries to help you easily
114bring your ideas to life on iOS and Android.
115If you don't have any mobile development experience, Flutter
116is an easy and fast way to build beautiful mobile apps.
117If you are an experienced iOS or Android developer,
118you can use Flutter for your views and leverage much of your
Mikkel Nygaard Ravne2988ad2017-12-21 11:33:22 +0100119existing Java/Kotlin/ObjC/Swift investment.
Filip Hracek53e23532017-07-12 10:12:25 -0700120
121### Build
122
123* **Beautiful app UIs**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700124 * Rich 2D GPU-accelerated APIs
125 * Reactive framework
126 * Animation/motion APIs
127 * Material Design and iOS widgets
Filip Hracek53e23532017-07-12 10:12:25 -0700128* **Fluid coding experience**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700129 * Sub-second, stateful hot reload
130 * IntelliJ: refactor, code completion, etc
131 * Dart language and core libs
132 * Package manager
Filip Hracek53e23532017-07-12 10:12:25 -0700133* **Full-featured apps**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700134 * Interop with mobile OS APIs & SDKs
135 * Gradle/Java/Kotlin
136 * Cocoapods/ObjC/Swift
Filip Hracek53e23532017-07-12 10:12:25 -0700137
138### Optimize
139
140* **Test**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700141 * Unit testing
142 * Integration testing
143 * On-device testing
Filip Hracek53e23532017-07-12 10:12:25 -0700144* **Debug**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700145 * IDE debugger
146 * Web-based debugger
147 * async/await aware
148 * Expression evaluator
Filip Hracek53e23532017-07-12 10:12:25 -0700149* **Profile**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700150 * Timeline
151 * CPU and memory
152 * In-app perf charts
Filip Hracek53e23532017-07-12 10:12:25 -0700153
154### Deploy
155
156* **Compile**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700157 * Native ARM code
158 * Dead code elimination
Filip Hracek53e23532017-07-12 10:12:25 -0700159* **Distribution**
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700160 * App Store
161 * Play Store
Filip Hracek53e23532017-07-12 10:12:25 -0700162
163Learn more about what makes Flutter special in the
164<a href="https://flutter.io/technical-overview/">technical overview</a>.
Nicholas Rebhunab56c632018-03-16 00:29:49 -0700165
Adam Barthc8878782016-10-31 21:53:27 -0700166Join us in our [Gitter chat room](https://gitter.im/flutter/flutter) or join our public mailing list,
Adam Barth7b0bbdb2015-10-30 11:16:58 -0700167[flutter-dev@googlegroups.com](https://groups.google.com/forum/#!forum/flutter-dev).
Filip Hracek53e23532017-07-12 10:12:25 -0700168
169[flutter.io]: https://flutter.io/