SlideShare a Scribd company logo
1 of 81
Download to read offline
Александр Леущенко
UaMobile 2019
Flutter
no more boring apps
Про меня
● Head of Mobile Unit в Ciklum Digital
● В мобильной разработке с 2012 г.
● Когда-то Xamarin Certified Mobile Developer
● Писал под iOS, Android, WP, UWP, Xamarin
● Новая любовь - Flutter
О чем будем говорить?
1) Что такое Boring apps?
2) Кто виноват и что делать?
3) Что выделяет Flutter?
Что такое Boring apps?
Стали ли приложения хуже?
Использовал бы сейчас?
История про ожидания
Специализация
Less is more!
Инструмент для мобильной
разработки в 2019
Инструмент мобильного разработчика в 2019 году
● Простой как снаружи, так и внутри
● Поддерживает последние веяния UX/UI
● И чтобы Redux, MVVM, и вот это всё
Инструмент мобильного разработчика в 2019 году
● Простой как снаружи, так и внутри
● Поддерживает последние веяния UX/UI
● И чтобы Redux, MVVM, и вот это всё
Как работает Flutter?
Brain Hazard
Низкоуровневый UI
(1000-5000)
Понятный UI (500-1000)
Тривиальный UI
(100-1000)
Всё открыто и почти
всё понятно!
Инструмент мобильного разработчика в 2019 году
● Простой как снаружи, так и внутри
● Поддерживает последние веяния UX/UI
● И чтобы Redux, MVVM, и вот это всё
Веяния в дизайне
Material
Cupertino
Fluent UI
www.github.com/olexale/
Инструмент мобильного разработчика в 2019 году
● Простой как снаружи, так и внутри
● Поддерживает последние веяния UX/UI
● И чтобы Redux, MVVM, и вот это всё
Вечный вопрос
Какая архитектура?
Ответ: любая!
Redux
Action Store View
Reducer(s)
BloC
BloC
Component
View
BloC
Provider
Inherited
Widget
BloC
BloC
Component
View
BloC
Provider
Inherited
Widget
Plain old anything
View
View
Model
Model
setState
Widget
Не знаю какую
архитектуру выбрать для
Flutter проекта…
А ты пиши всю логику
в Widget’ах, как я!
А связывать
их потом как?
Шарь State
между
компонентами Но это же
г*вн*к*д!
Ты чё, пёс, во
Flutter все так
делают!
Чем Flutter выделяется?
Дизайн Flutter
● Композиция лучше наследования
● Всё - это Widget
Композиция лучше наследования
Композиция лучше наследования
https://en.wikipedia.org/wiki/Composition_over_inheritance
Композиция лучше наследования
https://en.wikipedia.org/wiki/Composition_over_inheritance
Всё - это Widget
Чем может быть
Widget?
Чем может быть
Widget?
Чем может быть
Widget?
Хотя их бывает только
два вида
Widget без состояния
Widget c состоянием
Резюмируем
● Widget - это “коробочка”, с минимальной зависимостью
● Widget’ы легко писать
● Widget’ы легко поддерживать
There is a Widget for that!
Essential
Widgets
AppBar
BottomNavigationBar
Labels, buttons,
input fields, etc
Not boring Widgets
Transformations
Slivers
BackdropFilter
FutureBuilder & StreamBuilder
И это всё можно
анимировать!
Widgets == Apps ?
Приходите на вторую часть
Там
Будет
Код!
Flutter: No more boring apps! - UA Mobile 2019

More Related Content

Similar to Flutter: No more boring apps! - UA Mobile 2019

Ценность платформы Octopod для разработчиков мобильных приложений
Ценность платформы Octopod для разработчиков мобильных приложенийЦенность платформы Octopod для разработчиков мобильных приложений
Ценность платформы Octopod для разработчиков мобильных приложенийMichael Kozloff
 
Евгений Кобзев и Иван Медведев – Быстро сделай все что я хочу!
Евгений Кобзев и Иван Медведев – Быстро сделай все что я хочу!Евгений Кобзев и Иван Медведев – Быстро сделай все что я хочу!
Евгений Кобзев и Иван Медведев – Быстро сделай все что я хочу!404fest
 
Зачем компаниям нужны новые мобильные приложения?
Зачем компаниям нужны новые мобильные приложения?Зачем компаниям нужны новые мобильные приложения?
Зачем компаниям нужны новые мобильные приложения?Michael Kozloff
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...CEE-SEC(R)
 
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опытMaxim Salnikov
 
UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?GoSharp
 
Валентин Симонов ( Interactive Lab) - “Выбросьте свои клавиатуру и мышь! Разр...
Валентин Симонов ( Interactive Lab) - “Выбросьте свои клавиатуру и мышь! Разр...Валентин Симонов ( Interactive Lab) - “Выбросьте свои клавиатуру и мышь! Разр...
Валентин Симонов ( Interactive Lab) - “Выбросьте свои клавиатуру и мышь! Разр...DevGAMM Conference
 
Мобильная разработка для олдскульных программистов
Мобильная разработка для олдскульных программистовМобильная разработка для олдскульных программистов
Мобильная разработка для олдскульных программистовAnton Karpenko (KARPOLAN)
 
Модуль 15. Лекция 59-60.
Модуль 15. Лекция 59-60. Модуль 15. Лекция 59-60.
Модуль 15. Лекция 59-60. Yana Brodetski
 
Android time management
 Android time management Android time management
Android time managementDmitriy Gashpar
 
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019UA Mobile
 
Lviv MDDay 2014. Дмитро Чута “Інтерактивна революція чи що потрібно знати про...
Lviv MDDay 2014. Дмитро Чута “Інтерактивна революція чи що потрібно знати про...Lviv MDDay 2014. Дмитро Чута “Інтерактивна революція чи що потрібно знати про...
Lviv MDDay 2014. Дмитро Чута “Інтерактивна революція чи що потрібно знати про...Lviv Startup Club
 
Building your Flutter apps using Redux - UA Mobile 2019
Building your Flutter apps using Redux - UA Mobile 2019Building your Flutter apps using Redux - UA Mobile 2019
Building your Flutter apps using Redux - UA Mobile 2019UA Mobile
 
2017-03-26 03 Кирилл Лейфер. Прелести и ужасы мобильной разработки
2017-03-26 03 Кирилл Лейфер. Прелести и ужасы мобильной разработки2017-03-26 03 Кирилл Лейфер. Прелести и ужасы мобильной разработки
2017-03-26 03 Кирилл Лейфер. Прелести и ужасы мобильной разработкиHappyDev-lite
 
2015 01-03 01 Денис Визигин. Будущее мобильной разработки
2015 01-03 01 Денис Визигин. Будущее мобильной разработки2015 01-03 01 Денис Визигин. Будущее мобильной разработки
2015 01-03 01 Денис Визигин. Будущее мобильной разработкиОмские ИТ-субботники
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системахWhiteMbIXA
 

Similar to Flutter: No more boring apps! - UA Mobile 2019 (20)

Wishnu deck
Wishnu deckWishnu deck
Wishnu deck
 
Mobile development
Mobile developmentMobile development
Mobile development
 
Ценность платформы Octopod для разработчиков мобильных приложений
Ценность платформы Octopod для разработчиков мобильных приложенийЦенность платформы Octopod для разработчиков мобильных приложений
Ценность платформы Octopod для разработчиков мобильных приложений
 
Евгений Кобзев и Иван Медведев – Быстро сделай все что я хочу!
Евгений Кобзев и Иван Медведев – Быстро сделай все что я хочу!Евгений Кобзев и Иван Медведев – Быстро сделай все что я хочу!
Евгений Кобзев и Иван Медведев – Быстро сделай все что я хочу!
 
Зачем компаниям нужны новые мобильные приложения?
Зачем компаниям нужны новые мобильные приложения?Зачем компаниям нужны новые мобильные приложения?
Зачем компаниям нужны новые мобильные приложения?
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
 
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
 
Novitsky presentation
Novitsky presentationNovitsky presentation
Novitsky presentation
 
UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?UniversalApp "убийца" WPF или же это WPF+ ?
UniversalApp "убийца" WPF или же это WPF+ ?
 
Gtug.sucks.vs.rules
Gtug.sucks.vs.rulesGtug.sucks.vs.rules
Gtug.sucks.vs.rules
 
Валентин Симонов ( Interactive Lab) - “Выбросьте свои клавиатуру и мышь! Разр...
Валентин Симонов ( Interactive Lab) - “Выбросьте свои клавиатуру и мышь! Разр...Валентин Симонов ( Interactive Lab) - “Выбросьте свои клавиатуру и мышь! Разр...
Валентин Симонов ( Interactive Lab) - “Выбросьте свои клавиатуру и мышь! Разр...
 
Мобильная разработка для олдскульных программистов
Мобильная разработка для олдскульных программистовМобильная разработка для олдскульных программистов
Мобильная разработка для олдскульных программистов
 
Модуль 15. Лекция 59-60.
Модуль 15. Лекция 59-60. Модуль 15. Лекция 59-60.
Модуль 15. Лекция 59-60.
 
Android time management
 Android time management Android time management
Android time management
 
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
 
Lviv MDDay 2014. Дмитро Чута “Інтерактивна революція чи що потрібно знати про...
Lviv MDDay 2014. Дмитро Чута “Інтерактивна революція чи що потрібно знати про...Lviv MDDay 2014. Дмитро Чута “Інтерактивна революція чи що потрібно знати про...
Lviv MDDay 2014. Дмитро Чута “Інтерактивна революція чи що потрібно знати про...
 
Building your Flutter apps using Redux - UA Mobile 2019
Building your Flutter apps using Redux - UA Mobile 2019Building your Flutter apps using Redux - UA Mobile 2019
Building your Flutter apps using Redux - UA Mobile 2019
 
2017-03-26 03 Кирилл Лейфер. Прелести и ужасы мобильной разработки
2017-03-26 03 Кирилл Лейфер. Прелести и ужасы мобильной разработки2017-03-26 03 Кирилл Лейфер. Прелести и ужасы мобильной разработки
2017-03-26 03 Кирилл Лейфер. Прелести и ужасы мобильной разработки
 
2015 01-03 01 Денис Визигин. Будущее мобильной разработки
2015 01-03 01 Денис Визигин. Будущее мобильной разработки2015 01-03 01 Денис Визигин. Будущее мобильной разработки
2015 01-03 01 Денис Визигин. Будущее мобильной разработки
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системах
 

More from UA Mobile

Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...UA Mobile
 
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...UA Mobile
 
Leave your Room behind - UA Mobile 2019
Leave your Room behind - UA Mobile 2019Leave your Room behind - UA Mobile 2019
Leave your Room behind - UA Mobile 2019UA Mobile
 
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019UA Mobile
 
Google Wear OS watch faces and applications development - UA Mobile 2019
Google Wear OS watch faces and applications development - UA Mobile 2019Google Wear OS watch faces and applications development - UA Mobile 2019
Google Wear OS watch faces and applications development - UA Mobile 2019UA Mobile
 
Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019UA Mobile
 
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019UA Mobile
 
Managing State in Reactive applications - UA Mobile 2019
Managing State in Reactive applications - UA Mobile 2019Managing State in Reactive applications - UA Mobile 2019
Managing State in Reactive applications - UA Mobile 2019UA Mobile
 
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019UA Mobile
 
Актуальні практики дизайну мобільних додатків - UA Mobile 2019
Актуальні практики дизайну мобільних додатків - UA Mobile 2019Актуальні практики дизайну мобільних додатків - UA Mobile 2019
Актуальні практики дизайну мобільних додатків - UA Mobile 2019UA Mobile
 
До чого прикладати Docker в Android? - UA Mobile 2019
До чого прикладати Docker в Android? - UA Mobile 2019До чого прикладати Docker в Android? - UA Mobile 2019
До чого прикладати Docker в Android? - UA Mobile 2019UA Mobile
 
Optional. Tips and Tricks - UA Mobile 2019
Optional. Tips and Tricks - UA Mobile 2019Optional. Tips and Tricks - UA Mobile 2019
Optional. Tips and Tricks - UA Mobile 2019UA Mobile
 
Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...UA Mobile
 
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019UA Mobile
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019UA Mobile
 
Sceneform SDK на практиці - UA Mobile 2019
Sceneform SDK на практиці - UA Mobile 2019Sceneform SDK на практиці - UA Mobile 2019
Sceneform SDK на практиці - UA Mobile 2019UA Mobile
 
Coroutines in Kotlin. UA Mobile 2017.
Coroutines in Kotlin. UA Mobile 2017.Coroutines in Kotlin. UA Mobile 2017.
Coroutines in Kotlin. UA Mobile 2017.UA Mobile
 
Augmented reality on Android. UA Mobile 2017.
Augmented reality on Android. UA Mobile 2017.Augmented reality on Android. UA Mobile 2017.
Augmented reality on Android. UA Mobile 2017.UA Mobile
 
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.Architecture Patterns in Practice with Kotlin. UA Mobile 2017.
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.UA Mobile
 
MVVM with Databinding and Google's new ViewModel. UA Mobile 2017.
MVVM with Databinding and Google's new ViewModel. UA Mobile 2017.MVVM with Databinding and Google's new ViewModel. UA Mobile 2017.
MVVM with Databinding and Google's new ViewModel. UA Mobile 2017.UA Mobile
 

More from UA Mobile (20)

Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...
 
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
 
Leave your Room behind - UA Mobile 2019
Leave your Room behind - UA Mobile 2019Leave your Room behind - UA Mobile 2019
Leave your Room behind - UA Mobile 2019
 
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
 
Google Wear OS watch faces and applications development - UA Mobile 2019
Google Wear OS watch faces and applications development - UA Mobile 2019Google Wear OS watch faces and applications development - UA Mobile 2019
Google Wear OS watch faces and applications development - UA Mobile 2019
 
Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019
 
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019
 
Managing State in Reactive applications - UA Mobile 2019
Managing State in Reactive applications - UA Mobile 2019Managing State in Reactive applications - UA Mobile 2019
Managing State in Reactive applications - UA Mobile 2019
 
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
 
Актуальні практики дизайну мобільних додатків - UA Mobile 2019
Актуальні практики дизайну мобільних додатків - UA Mobile 2019Актуальні практики дизайну мобільних додатків - UA Mobile 2019
Актуальні практики дизайну мобільних додатків - UA Mobile 2019
 
До чого прикладати Docker в Android? - UA Mobile 2019
До чого прикладати Docker в Android? - UA Mobile 2019До чого прикладати Docker в Android? - UA Mobile 2019
До чого прикладати Docker в Android? - UA Mobile 2019
 
Optional. Tips and Tricks - UA Mobile 2019
Optional. Tips and Tricks - UA Mobile 2019Optional. Tips and Tricks - UA Mobile 2019
Optional. Tips and Tricks - UA Mobile 2019
 
Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...
 
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
 
Sceneform SDK на практиці - UA Mobile 2019
Sceneform SDK на практиці - UA Mobile 2019Sceneform SDK на практиці - UA Mobile 2019
Sceneform SDK на практиці - UA Mobile 2019
 
Coroutines in Kotlin. UA Mobile 2017.
Coroutines in Kotlin. UA Mobile 2017.Coroutines in Kotlin. UA Mobile 2017.
Coroutines in Kotlin. UA Mobile 2017.
 
Augmented reality on Android. UA Mobile 2017.
Augmented reality on Android. UA Mobile 2017.Augmented reality on Android. UA Mobile 2017.
Augmented reality on Android. UA Mobile 2017.
 
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.Architecture Patterns in Practice with Kotlin. UA Mobile 2017.
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.
 
MVVM with Databinding and Google's new ViewModel. UA Mobile 2017.
MVVM with Databinding and Google's new ViewModel. UA Mobile 2017.MVVM with Databinding and Google's new ViewModel. UA Mobile 2017.
MVVM with Databinding and Google's new ViewModel. UA Mobile 2017.
 

Flutter: No more boring apps! - UA Mobile 2019