Build apps for any screen
Flutter transforms the app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase.
Introducing the new Flutter Consultant directory! Find the right team to help you build in Flutter. Learn More
Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.
- Fast
- Productive
- Flexible
Fast
Flutter code compiles to ARM or Intel machine code as well as JavaScript, for fast performance on any device.
Productive
Build and iterate quickly with Hot Reload. Update code and see changes almost instantly, without losing state.
Flexible
Control every pixel to create customized, adaptive designs that look and feel great on any screen.
Multi-Platform
Reach users on every screen
Deploy to multiple devices from a single codebase: mobile, web, desktop, and embedded devices.
Developer Experience
Transform your workflow
Take control of your codebase with automated testing, developer tooling, and everything else you need to build production-quality apps.
Stable & Reliable
Trusted by many
Flutter is supported and used by Google, trusted by well-known brands around the world, and maintained by a community of global developers.
Developer Story
See how Google Pay uses Flutter to change the world of mobile payments
A Global Open Source Community
Supported by Google, open to everyone
Collaborate on the open source framework, contribute to the package ecosystem on pub.dev, and find help when you need it.
Dart
Flutter is powered by Dart, a language optimized for fast apps on any platform
Latest news
What’s new in Flutter 3.13
Dart 3.1 & a retrospective on functional style programming in Dart 3
What’s new in Flutter 3.10
Racing Forward at I/O 2023 with Flutter and Dart
Announcing Dart 3
Wonderous: Explore the World with Flutter
Join our
newsletter
Get started
Instant access to the power of the Flutter framework
Except as otherwise noted, this work is licensed under a Creative Commons Attribution 4.0 International License, and code samples are licensed under the BSD License.
Google uses cookies to deliver its services, to personalize ads, and to analyze traffic. You can adjust your privacy controls anytime in your Google settings. Learn more.
NOTICE: Flutter hopes this directory is useful for customers seeking consultants with Flutter experience; however, Flutter makes no representation to you or anyone else that the listed consultants are Flutter or Google partners, and Flutter does not represent or warrant their qualifications or the quality of services you may receive. Your relationship is strictly between you and the consultants.
Flutter — универсальный фреймворк для мобильной разработки
Разработчик из команды Яндекс Про рассказывает, как опенсорсный фреймворк объединяет создателей мобильных приложений iOS и Android.
Лёша Шведчиков. Разработчик в Яндекс Про
Команда Яндекс Про создаёт приложения для водителей такси, курьеров, сборщиков заказов в магазинах и других потенциальных исполнителей.
В Яндекс я попал через стажировку. Изначально был Android-разработчиком, закончил IT Школу Samsung, но однажды по воле случая выполнил пару фриланс-заказов на Flutter, и мне понравилось. В поисках работы я пришёл на сайт стажировок в Яндексе, там было два варианта: Android-разработчик и iOS-разработчик. Я подал резюме на Android-разработчика, рассказал про свой опыт и про проекты, которыми занимался, и в конце приписал: «Но на самом деле моё сердце лежит к Flutter». Мне повезло, оказалось, что в Яндексе есть такие продукты. В итоге я прошёл отбор, меня пригласили на стажировку — теперь я занимаюсь разработкой на Flutter в Яндекс Про. Также Flutter используют команды Драйва, Кью и Практикума.
Для меня важно работать в большом проекте, где можно решать действительно сложные и важные задачи. А ещё моя страсть — «поэтичный» код: такой, который вызывает восторг и который хочется перечитать.
Говорим Flutter — подразумеваем Dart
Многие люди уже пользуются приложениями, написанными на Flutter, но не замечают этого. Например, мини-приложение Gmail, приложения BMW, eBay, Tencent.
В Яндексе, в частности в Яндекс Про, фреймворк Flutter используется для написания мобильных приложений на Dart. Поэтому внутри мы их не разделяем — работа с Flutter предполагает знание Dart.
Фреймворк — это набор готовых абстракций, участков кода, функций и методов, которые можно подключить в Dart-проект всего одной строчкой. А ещё Flutter — это целая идеология и набор правил: как писать код и какие приёмы использовать. Это целый мир, существующий по своим законам и традициям.
Преимущества Flutter для разработчиков
— Кроссплатформенность. На Flutter легко переходить тем, кто уже пробовал создавать мобильные приложения на iOS или Android. При этом код получается качественным, потому что у команды появляется больше времени на доработку и тестирование: не нужно распылять внимание на несколько приложений, чтобы проверить, как в них реализованы одни и те же функции.
— Работать на Flutter может одна команда вместо двух или даже трёх. У нас в команде есть люди, которые пришли с хорошим знанием Flutter, есть бывшие Android- и iOS-разработчики. Все они ценны тем, что знают специфику разных приложений и при этом решают совместные задачи.
— Для того чтобы сделать хорошее коммерческое приложение, достаточно выучить всего один язык — Dart. Для сравнения: в нативной разработке нужно разобраться в специфике Android и выучить минимум два языка — Java и XML. К тому же придётся повозиться с Android-специфичными штуками. В случае с Flutter достаточно задать в консоли проект и писать его на Dart, чтобы создать приложение, которое работает «из коробки». Да, в дальнейшем для некоторых фич, связанных с платформенной спецификой, понадобится и нативность, но базово будет достаточно Dart.
— У Dart низкий порог вхождения, поэтому освоить Flutter можно довольно быстро. Особенно если вы уже знаете несколько языков программирования. Так было со мной: когда я начинал учить Flutter, я просто открыл документацию Dart, прочёл ее часа за три, и начал на нём писать. Какие-то сверхнавыки, вроде функционального программирования, здесь не нужны. Освоите базу — и это уже даст вам возможность начать программировать на Flutter. Легко переходить на Flutter и тем, кто пробовал писать приложения на React. JS и Dart похожи реактивным UI, подходами к управлению состоянием и вёрсткой в коде.
— Flutter позволяет больше времени уделять тому, что важно для пользователя: приятному UI, стабильной работе, так как реализация многих фич на Flutter занимает ощутимо меньше времени, чем их нативные аналоги.
— Этот фреймворк идеален для прототипирования, особенно в том случае, когда хочется просто проверить какую-то гипотезу: можно за пару дней сделать приложение и протестировать его. Flutter обеспечивает очень высокую скорость разработки, если вы умеете с ним обращаться и хорошо знакомы с API Flutter.
Кроссплатформенность является не только главным преимуществом Flutter, но и причиной, по которой он появился. Часто стоит задача разработать одинаковые приложения для iOS, Android и браузера. Большая компания может позволить себе несколько команд, а игрокам поменьше важно оптимизировать процесс работы. Так получился Flutter. Он похож на бензин, который подойдёт любому автомобилю: с ним заведётся и Android, и iPhone, и десктоп, и Fuchsia, и даже в вебе всё будет работать. Правда, понадобятся дополнительные усилия для того, чтобы приложение было нативным и удобным для пользователей.
Заменяет ли Flutter нативную разработку
Приложение, написанное на Flutter, везде выглядит и работает одинаково — и на Xiaomi, и на iPhone. Это удобно, но в то же время теряется платформенно-специфичный опыт и нативность.
В мобильной разработке нативным считается приложение, написанное под конкретную платформу и до мелочей учитывающее её специфику. Например, для iOS есть набор дизайн-гайдлайнов, описывающих, как должно выглядеть и работать хорошее приложение. В такие гайды входит анимация, способы прокручивания списков, индикаторы загрузки и другие стандарты.
Существенная разница между операционными системами состоит в концептуальных различиях: по-разному называются и работают одни и те же сущности, отличаются ограничения. С Flutter легко создавать универсальный базовый интерфейс, но для разработки более серьёзных функций — отправки уведомлений, получения геолокации и работы виджетов — нужно знать платформенную специфику.
Для пользователя нативность приложения проявляется в том, что оно выглядит узнаваемым, в нём интуитивно понятный интерфейс, к которому не нужно долго привыкать. Конечно, во Flutter можно написать код так, чтобы приложение выглядело максимально органично, но всё равно останется ощущение, что «что-то не то». Особенно это характерно для Flutter-приложений в iOS. Так что Flutter не является полной заменой нативной разработке.
Почему Яндекс запустил стек Flutter
Мы выбрали Flutter для разработки Яндекс Про, поскольку с ним можно унифицировать и ускорить разработку, при этом нет необходимости поддерживать работу двух команд. Яндекс Про — это большой продукт с множеством функций и исполнителей, и дальше он только продолжит расти. Поэтому для нас было важно написать приложение так, чтобы мы могли его легко дорабатывать и подключать всё больше сервисов. Flutter позволяет иметь в едином виде кодовую базу для всех сервисов, что гарантирует одинаково надёжную работу с любого устройства. Делать такой большой продукт параллельно для нескольких платформ очень тяжело.
Перспективы развития стека есть: вполне возможно, что новые сервисы будут разрабатываться на Flutter. Мобильными приложениями всё не ограничивается: начиная с версии 2.10 во Flutter добавили полную поддержку браузеров, десктопа и Windows. Нам кажется, что в будущем Flutter будет ещё более востребованным, поэтому у нас на него большие планы.
При подготовке материала использовались источники:
https://flutter.dev/
https://academy.yandex.ru/journal/flutter-universalnyy-freymvork-dlya-mobilnoy-razrabotki