SlideShare una empresa de Scribd logo
1 de 31
GlobalLogic
A Hitachi Group Company
Flutter
Siarhei Chernik
Maksym Kulba
Anastasiia Zhdanova
Введение
1. Что такое Flutter
2. Сравнение производительности
3. Архитектура - как это работает
4. Простота разработки
- Dart
- Widgets
- Web и Back-end
- Pub.dev
1. Flutter Bloc - архитектура
2. Native iOS and Android
3. Тестирование
4. Примеры приложений на Flutter
5. Плюсы и минусы
6. Перспективы и итоги
Flutter
Комплект средств разработки и фреймворк с открытым исходным кодом для
создания мобильных приложений под Android и iOS, а также веб-приложений с
использованием языка программирования Dart, разработанный и развиваемый
корпорацией Google.
- SDK (Software Development Kit)
- Framework
Flutter
История:
2015 - ‘Sky’ для Андроид приложений
2017 май - альфа верся
2018 декабрь - версия 1.0 (первая стабильная версия)
2020 май - выпущен DevTools
2021 март - версия 2.0 (полная поддержка веб-приложений)
2021 сентябрь - версия 2.5 (улучшенная производительность, Material You)
Flutter
Главные компоненты:
- Dart platform - виртуальная машина Dart
- Flutter engine - портативная среда выполнения приложений
- Foundation library - базовые классы для создания приложений
- Design specific widgets - виджеты Material Design(Google) и
Cupertino(Apple)
- Widgets - виджеты Flutter
- Flutter Development Tools (DevTools)
https://ru.wikipedia.org/wiki/Flutter
Flutter
- Mobile
- Web
- Desktop
- Embedded support
Сравнение Flutter и React Native
Основные аспекты:
- Сборка
- Доступность библиотек и
виджетов
- Производительность
- Безопасность
Сборка
Обе платформы используют
инструменты мобильной операционной
системы для сборки: Gradle и Xcode build
для Android и IOS соответственно.
Библиотеки и компоненты
React Native
- Давно на рынке и имеет тонны
сторонних библиотек.
- Может использовать
библиотеки для React.
Flutter
- На рынке 3 года и имеет не так
много сторонних библиотек.
- Dart мало где используется вне
Flutter.
Производительность
React Native
- Использует родные виджеты
платформы(Native Views) и
передает события через
JavaScript.
Flutter
- Рендерит все, используя
собственный 2D-движок Skia,
избегая какого-либо
специального соединения между
вьюшками и другим кодом.
Безопасность
React Native
- Завязан на js и приложение на
его основе содержит js bundle
Flutter
- Гораздо сложнее изменить
приложение, так как Dart код
заранее компилируется в
бинарный код для целевой
архитектуры.
Вывод
- Недостаток библиотек для Flutter.
- Более длительное время запуска React-Native.
- Более низкая безопасность для React-Native.
- Обучение Dart новым разработчикам, так как таких разработчиков на
рынке нет/мало.
Архитектура
Простота разработки
Dart
Язык программирования, на котором пишут
приложения под Flutter. Очень прост, если у вас
есть опыт Java или JavaScript.
Объектно-ориентированный, поэтому даже
функции являются объектами и имеют тип Function.
Это означает, что функции могут быть присвоены
переменным или переданы как параметры другим
функциям.
- Структурированный и гибкий
- Похож на существующие
- Высокая производительность программ
import 'dart:math' as math;
class Point {
final num x, y;
// Конструктор, инициализирующий поля
Point(this.x, this.y);
// Именованный конструктор со списком
// инициализации по умолчанию
Point.origin() : x = 0, y = 0;
num distanceTo(Point other) {
var dx = x - other.x;
var dy = y - other.y;
return math.sqrt(dx * dx + dy * dy);
}
}
main() {
var p1 = new Point(10, 10);
var p2 = new Point.origin();
var distance = p1.distanceTo(p2);
print(distance);
}
https://ru.wikipedia.org/wiki/Dart
Простота разработки
Автоматическая инициализация полей
class Point {
num x, y;
Point(this.x, this.y);
}
Именованные конструкторы
class Point {
num x, y;
Point(this.x, this.y);
Point.zero() : x = 0, y = 0;
Point.polar(num theta, num radius) {
x = Math.cos(theta) * radius;
y = Math.sin(theta) * radius;
}
}
Анонимные функции
window.on.click.add((event) {
print('You clicked the window.');
})
}
Определение членов класса
class Rectangle {
num width, height;
bool contains(num x, num y) => (x < width) && (y < height);
num area() => width * height;
}
Поля, геттеры, сеттеры
class Rectangle {
num left, top, width, height;
num get right() => left + width;
set right(num value) => left = value - width;
num get bottom() => top + height;
set bottom(num value) => top = value - height;
Rectangle(this.left, this.top, this.width, this.height);
}
Простота разработки
Определения верхнего уровня
num abs(num value) => value < 0 ? -value : value;
final TWO_PI = Math.PI * 2.0;
int get today() {
final date = new DateTime.now();
return date.day;
}
Строки
var name = 'Fred';
var salutation = 'Hi';
var greeting = '$salutation, $name';
Операторы
class Vector {
num x, y;
Vector(this.x, this.y);
operator +(Vector other) => new Vector(x + other.x, y + other.y);
}
var position = new Vector(3, 4);
var velocity = new Vector(1, 2);
var newPosition = position + velocity;
Равенство
== и != - сравнение
=== и !== - проверка объекта на идентичность
Простота разработки
Widgets
import 'package:flutter/widgets.dart';
import 'package:flutter/material.dart';
main() => runApp(
Directionality(
textDirection: TextDirection.ltr,
child: Container(
color: Colors.black,
child: const Center(
child: Text(
'Hello, Flutter!',
style: TextStyle(
color: Color.fromRGBO(243, 112, 55, 1),
fontSize: 29.0,
),
),
),
),
),
);
Простота разработки
Web и Back-end
Простота разработки
Pub.dev
Это официальный репозиторий,
содержащий разнообразные библиотеки для
языка программирования Dart, а также для
Flutter.
Flutter Favorite
FEC - состоит из членов команды Flutter
и членов сообщества Flutter, разбросанных по
всей его экосистеме. Одна из их задач -
решить, когда пакет достигнет планки
качества, чтобы стать фаворитом Flutter.
Паттерн Bloc
BLoC — «Business Logic Component» (компонент бизнес-логики).
Android & IOS
Flutter помогает организовать
взаимодействие между Dart и нативным
кодом приложения при помощи
механизма PlatformChannel.
Тестирование
Тесты можно поделить на три основных типа:
● Unit-тесты - для тестирования отдельной функции, метода или класса. Unit-тесты
обычно представляют собой автоматизированные тесты, написанные и выполняемые
разработчиками программного обеспечения, чтобы гарантировать, что часть кода
соответствует своему дизайну и ведет себя так, как задумано.
● Widget test - для тестирования отдельного виджета. Также называется компонентным
тестом. Тесты выполняются для каждого отдельного компонента (виджета) без
интеграции с другими компонентами.
● Интеграционные тесты - для тестирования всего приложения или его части. Тесты
выполняются на группе модулей для оценки соответствия заданным функциональным
требованиям.
Тестирование
Unit-тесты
Добавьте зависимости test / flutter_test.
Пакет test предоставляет основу для написания модульных тестов в
Dart.
Mockito - это популярный фреймворк для Mock object-ов,
который можно использовать для создания и настройки фиктивных
объектов. Добавьте зависимость build_runner в pubspec.yaml вашего
пакета в разделе dev_dependencies.
Mock object - это реализация фиктивного объекта для
интерфейса или класса. Это позволяет определить результат вызова
определенного метода.
Использование Mockito для имитации объектов.
Тестирование
Widget test
Библиотека тестирования flutter_test для флаттера предоставляет возможность
тестировать виджеты.
Основные инструменты:
● WidgetTester - позволяет создавать и взаимодействовать с виджетами в тестовой
среде.
● функция testWidgets () автоматически создает новый WidgetTester для каждого
тестового примера и используется вместо обычной функции test ()
● класс Finder позволяет искать виджеты в тестовой среде
● Константы Matcher для конкретных виджетов помогают проверить, обнаруживает
ли Finder виджет или несколько виджетов в тестовой среде.
Тестирование
Интеграционные тесты :
Интеграционные тесты на Flutter пишутся при помощи Flutter
Driver, для которого есть простой и понятный tutorial на
официальном сайте (ссылка в правом нижнем углу).
Пакет flutter_driver предоставляет:
● инструменты для создания приложения и управления этим
приложением из набора тестов.
● предоставляет API для тестирования приложения Flutter,
которое работает на реальных устройствах и эмуляторах
● приложение работает в отдельном процессе от самого теста
https://flutter.dev/docs/cookbook/testing/integration/introduction
Тестирование итоги:
● Возможности тестирования во Flutter не
уступают нативным
● Одни тесты для тестирования на двух
платформах (iOS, Android)
● Простые и понятные туториалы на
официальном сайте
● Быстрое обучение
Плюсы и минусы Flutter
+
+ Одинаковый пользовательский
интерфейс и бизнес-логика на все
платформы
+ Сокращение времени разработки кода
+ Аналогично производительности Native
приложений
+ Собственный движок рендеринга
+ Возможность выйти за рамки
мобильных устройств
-
- На рынке недавно и имеет не так
много сторонних библиотек
- Необходимы знания нативных языков
- Не хватает разработчиков на Flutter
- Dart мало где используется вне Flutter
Примеры приложений
● Google Ads – помогает пользователям управлять рекламными кампаниями,
оптимизировать и отслеживать их показатели;
● Grab – приложение для службы доставки еды;
● Stadia – игровой сервис от Google;
● eBay Motors – приложение для покупки и продажи автомобилей;
● Baidu Tieba – крупнейшая китайская коммуникационная платформа;
● KFC DSR – корпоративное приложение для KFC от Surf, которое оптимизирует
документооборот в компании;
● The Hole – стриминговая платформа с более чем 16 миллионами подписчиков;
приложение разработано Surf за четыре месяца.
Примеры компаний активно использующих
Flutter
● Alibaba
● Square
● Ebay
● Hamilton Musical
● Reflectly
● Groupon
● Cryptomaniac
● Realtor.com
● BMW
https://flutter.dev/showcase
Перспективы и итоги
● Молодая стремительно
развивающаяся технология
● Необходимо меньше времени на
написание кода и тестов
● Производительность не уступает
нативной
● Возможность выйти за рамки
мобильных устройств
● Растущий спрос, но все еще мало
специалистов
Спасибо за внимание
GlobalLogic
A Hitachi Group Company

Más contenido relacionado

La actualidad más candente

Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Rinat Shaikhutdinov
 
SPb Jenkins Meetup #6. Тёмная сторона Jenkins. Стабилизируем Remoting
 SPb Jenkins Meetup #6. Тёмная сторона Jenkins. Стабилизируем Remoting SPb Jenkins Meetup #6. Тёмная сторона Jenkins. Стабилизируем Remoting
SPb Jenkins Meetup #6. Тёмная сторона Jenkins. Стабилизируем RemotingOleg Nenashev
 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsNikita Lipsky
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Magneta AI
 
Tfs Overview And Architecture (www.cmcons.com)
Tfs Overview And Architecture (www.cmcons.com)Tfs Overview And Architecture (www.cmcons.com)
Tfs Overview And Architecture (www.cmcons.com)Alexander Novichkov
 
Migration of Cloud Services to Microsoft Azure Service Fabric
Migration of Cloud Services to Microsoft Azure Service FabricMigration of Cloud Services to Microsoft Azure Service Fabric
Migration of Cloud Services to Microsoft Azure Service FabricGlobalLogic Ukraine
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaNikita Lipsky
 
Service Discovery. More that it seems
Service Discovery. More that it seemsService Discovery. More that it seems
Service Discovery. More that it seemsAleksandr Tarasov
 

La actualidad más candente (12)

Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
 
SPb Jenkins Meetup #6. Тёмная сторона Jenkins. Стабилизируем Remoting
 SPb Jenkins Meetup #6. Тёмная сторона Jenkins. Стабилизируем Remoting SPb Jenkins Meetup #6. Тёмная сторона Jenkins. Стабилизируем Remoting
SPb Jenkins Meetup #6. Тёмная сторона Jenkins. Стабилизируем Remoting
 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java Applications
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
 
Tfs Overview And Architecture (www.cmcons.com)
Tfs Overview And Architecture (www.cmcons.com)Tfs Overview And Architecture (www.cmcons.com)
Tfs Overview And Architecture (www.cmcons.com)
 
Spring Boot Ripper
Spring Boot RipperSpring Boot Ripper
Spring Boot Ripper
 
Описание и архитектура TFS 2008
Описание и архитектура TFS 2008Описание и архитектура TFS 2008
Описание и архитектура TFS 2008
 
Migration of Cloud Services to Microsoft Azure Service Fabric
Migration of Cloud Services to Microsoft Azure Service FabricMigration of Cloud Services to Microsoft Azure Service Fabric
Migration of Cloud Services to Microsoft Azure Service Fabric
 
CD with Jenkins. Lessons Learned
CD with Jenkins. Lessons LearnedCD with Jenkins. Lessons Learned
CD with Jenkins. Lessons Learned
 
Appery.io Ukraine_2016
Appery.io Ukraine_2016Appery.io Ukraine_2016
Appery.io Ukraine_2016
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на Java
 
Service Discovery. More that it seems
Service Discovery. More that it seemsService Discovery. More that it seems
Service Discovery. More that it seems
 

Similar a Online TechTalk “Flutter Mobile Development”

Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Rempl – крутая платформа для крутых инструментов
Rempl – крутая платформа для крутых инструментовRempl – крутая платформа для крутых инструментов
Rempl – крутая платформа для крутых инструментовRoman Dvornov
 
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений Mail.ru Group
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими рукамиRoman Dvornov
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClub QA Kostroma
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDDIosif Itkin
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoftKewpaN
 
Console application with ZF 2.0
Console application with ZF 2.0Console application with ZF 2.0
Console application with ZF 2.0Alexey Kachayev
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerLEDC 2016
 
Jubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolCOMAQA.BY
 

Similar a Online TechTalk “Flutter Mobile Development” (20)

Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Rempl – крутая платформа для крутых инструментов
Rempl – крутая платформа для крутых инструментовRempl – крутая платформа для крутых инструментов
Rempl – крутая платформа для крутых инструментов
 
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
Tdd php
Tdd phpTdd php
Tdd php
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDD
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDD
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
 
Console application with ZF 2.0
Console application with ZF 2.0Console application with ZF 2.0
Console application with ZF 2.0
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
 
Jubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation Tool
 
Лекция 1. Введение в Android.
Лекция 1. Введение в Android.Лекция 1. Введение в Android.
Лекция 1. Введение в Android.
 

Más de GlobalLogic Ukraine

GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic Ukraine
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxGlobalLogic Ukraine
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxGlobalLogic Ukraine
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxGlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Ukraine
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"GlobalLogic Ukraine
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic Ukraine
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationGlobalLogic Ukraine
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic Ukraine
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic Ukraine
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Ukraine
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic Ukraine
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"GlobalLogic Ukraine
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Ukraine
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"GlobalLogic Ukraine
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Ukraine
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Ukraine
 
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Ukraine
 

Más de GlobalLogic Ukraine (20)

GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptx
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptx
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic Education
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
 
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
 

Online TechTalk “Flutter Mobile Development”

  • 1. GlobalLogic A Hitachi Group Company Flutter Siarhei Chernik Maksym Kulba Anastasiia Zhdanova
  • 2. Введение 1. Что такое Flutter 2. Сравнение производительности 3. Архитектура - как это работает 4. Простота разработки - Dart - Widgets - Web и Back-end - Pub.dev 1. Flutter Bloc - архитектура 2. Native iOS and Android 3. Тестирование 4. Примеры приложений на Flutter 5. Плюсы и минусы 6. Перспективы и итоги
  • 3. Flutter Комплект средств разработки и фреймворк с открытым исходным кодом для создания мобильных приложений под Android и iOS, а также веб-приложений с использованием языка программирования Dart, разработанный и развиваемый корпорацией Google. - SDK (Software Development Kit) - Framework
  • 4. Flutter История: 2015 - ‘Sky’ для Андроид приложений 2017 май - альфа верся 2018 декабрь - версия 1.0 (первая стабильная версия) 2020 май - выпущен DevTools 2021 март - версия 2.0 (полная поддержка веб-приложений) 2021 сентябрь - версия 2.5 (улучшенная производительность, Material You)
  • 5. Flutter Главные компоненты: - Dart platform - виртуальная машина Dart - Flutter engine - портативная среда выполнения приложений - Foundation library - базовые классы для создания приложений - Design specific widgets - виджеты Material Design(Google) и Cupertino(Apple) - Widgets - виджеты Flutter - Flutter Development Tools (DevTools) https://ru.wikipedia.org/wiki/Flutter
  • 6. Flutter - Mobile - Web - Desktop - Embedded support
  • 7. Сравнение Flutter и React Native Основные аспекты: - Сборка - Доступность библиотек и виджетов - Производительность - Безопасность
  • 8. Сборка Обе платформы используют инструменты мобильной операционной системы для сборки: Gradle и Xcode build для Android и IOS соответственно.
  • 9. Библиотеки и компоненты React Native - Давно на рынке и имеет тонны сторонних библиотек. - Может использовать библиотеки для React. Flutter - На рынке 3 года и имеет не так много сторонних библиотек. - Dart мало где используется вне Flutter.
  • 10. Производительность React Native - Использует родные виджеты платформы(Native Views) и передает события через JavaScript. Flutter - Рендерит все, используя собственный 2D-движок Skia, избегая какого-либо специального соединения между вьюшками и другим кодом.
  • 11. Безопасность React Native - Завязан на js и приложение на его основе содержит js bundle Flutter - Гораздо сложнее изменить приложение, так как Dart код заранее компилируется в бинарный код для целевой архитектуры.
  • 12. Вывод - Недостаток библиотек для Flutter. - Более длительное время запуска React-Native. - Более низкая безопасность для React-Native. - Обучение Dart новым разработчикам, так как таких разработчиков на рынке нет/мало.
  • 14. Простота разработки Dart Язык программирования, на котором пишут приложения под Flutter. Очень прост, если у вас есть опыт Java или JavaScript. Объектно-ориентированный, поэтому даже функции являются объектами и имеют тип Function. Это означает, что функции могут быть присвоены переменным или переданы как параметры другим функциям. - Структурированный и гибкий - Похож на существующие - Высокая производительность программ import 'dart:math' as math; class Point { final num x, y; // Конструктор, инициализирующий поля Point(this.x, this.y); // Именованный конструктор со списком // инициализации по умолчанию Point.origin() : x = 0, y = 0; num distanceTo(Point other) { var dx = x - other.x; var dy = y - other.y; return math.sqrt(dx * dx + dy * dy); } } main() { var p1 = new Point(10, 10); var p2 = new Point.origin(); var distance = p1.distanceTo(p2); print(distance); } https://ru.wikipedia.org/wiki/Dart
  • 15. Простота разработки Автоматическая инициализация полей class Point { num x, y; Point(this.x, this.y); } Именованные конструкторы class Point { num x, y; Point(this.x, this.y); Point.zero() : x = 0, y = 0; Point.polar(num theta, num radius) { x = Math.cos(theta) * radius; y = Math.sin(theta) * radius; } } Анонимные функции window.on.click.add((event) { print('You clicked the window.'); }) } Определение членов класса class Rectangle { num width, height; bool contains(num x, num y) => (x < width) && (y < height); num area() => width * height; } Поля, геттеры, сеттеры class Rectangle { num left, top, width, height; num get right() => left + width; set right(num value) => left = value - width; num get bottom() => top + height; set bottom(num value) => top = value - height; Rectangle(this.left, this.top, this.width, this.height); }
  • 16. Простота разработки Определения верхнего уровня num abs(num value) => value < 0 ? -value : value; final TWO_PI = Math.PI * 2.0; int get today() { final date = new DateTime.now(); return date.day; } Строки var name = 'Fred'; var salutation = 'Hi'; var greeting = '$salutation, $name'; Операторы class Vector { num x, y; Vector(this.x, this.y); operator +(Vector other) => new Vector(x + other.x, y + other.y); } var position = new Vector(3, 4); var velocity = new Vector(1, 2); var newPosition = position + velocity; Равенство == и != - сравнение === и !== - проверка объекта на идентичность
  • 17. Простота разработки Widgets import 'package:flutter/widgets.dart'; import 'package:flutter/material.dart'; main() => runApp( Directionality( textDirection: TextDirection.ltr, child: Container( color: Colors.black, child: const Center( child: Text( 'Hello, Flutter!', style: TextStyle( color: Color.fromRGBO(243, 112, 55, 1), fontSize: 29.0, ), ), ), ), ), );
  • 19. Простота разработки Pub.dev Это официальный репозиторий, содержащий разнообразные библиотеки для языка программирования Dart, а также для Flutter. Flutter Favorite FEC - состоит из членов команды Flutter и членов сообщества Flutter, разбросанных по всей его экосистеме. Одна из их задач - решить, когда пакет достигнет планки качества, чтобы стать фаворитом Flutter.
  • 20. Паттерн Bloc BLoC — «Business Logic Component» (компонент бизнес-логики).
  • 21. Android & IOS Flutter помогает организовать взаимодействие между Dart и нативным кодом приложения при помощи механизма PlatformChannel.
  • 22. Тестирование Тесты можно поделить на три основных типа: ● Unit-тесты - для тестирования отдельной функции, метода или класса. Unit-тесты обычно представляют собой автоматизированные тесты, написанные и выполняемые разработчиками программного обеспечения, чтобы гарантировать, что часть кода соответствует своему дизайну и ведет себя так, как задумано. ● Widget test - для тестирования отдельного виджета. Также называется компонентным тестом. Тесты выполняются для каждого отдельного компонента (виджета) без интеграции с другими компонентами. ● Интеграционные тесты - для тестирования всего приложения или его части. Тесты выполняются на группе модулей для оценки соответствия заданным функциональным требованиям.
  • 23. Тестирование Unit-тесты Добавьте зависимости test / flutter_test. Пакет test предоставляет основу для написания модульных тестов в Dart. Mockito - это популярный фреймворк для Mock object-ов, который можно использовать для создания и настройки фиктивных объектов. Добавьте зависимость build_runner в pubspec.yaml вашего пакета в разделе dev_dependencies. Mock object - это реализация фиктивного объекта для интерфейса или класса. Это позволяет определить результат вызова определенного метода. Использование Mockito для имитации объектов.
  • 24. Тестирование Widget test Библиотека тестирования flutter_test для флаттера предоставляет возможность тестировать виджеты. Основные инструменты: ● WidgetTester - позволяет создавать и взаимодействовать с виджетами в тестовой среде. ● функция testWidgets () автоматически создает новый WidgetTester для каждого тестового примера и используется вместо обычной функции test () ● класс Finder позволяет искать виджеты в тестовой среде ● Константы Matcher для конкретных виджетов помогают проверить, обнаруживает ли Finder виджет или несколько виджетов в тестовой среде.
  • 25. Тестирование Интеграционные тесты : Интеграционные тесты на Flutter пишутся при помощи Flutter Driver, для которого есть простой и понятный tutorial на официальном сайте (ссылка в правом нижнем углу). Пакет flutter_driver предоставляет: ● инструменты для создания приложения и управления этим приложением из набора тестов. ● предоставляет API для тестирования приложения Flutter, которое работает на реальных устройствах и эмуляторах ● приложение работает в отдельном процессе от самого теста https://flutter.dev/docs/cookbook/testing/integration/introduction
  • 26. Тестирование итоги: ● Возможности тестирования во Flutter не уступают нативным ● Одни тесты для тестирования на двух платформах (iOS, Android) ● Простые и понятные туториалы на официальном сайте ● Быстрое обучение
  • 27. Плюсы и минусы Flutter + + Одинаковый пользовательский интерфейс и бизнес-логика на все платформы + Сокращение времени разработки кода + Аналогично производительности Native приложений + Собственный движок рендеринга + Возможность выйти за рамки мобильных устройств - - На рынке недавно и имеет не так много сторонних библиотек - Необходимы знания нативных языков - Не хватает разработчиков на Flutter - Dart мало где используется вне Flutter
  • 28. Примеры приложений ● Google Ads – помогает пользователям управлять рекламными кампаниями, оптимизировать и отслеживать их показатели; ● Grab – приложение для службы доставки еды; ● Stadia – игровой сервис от Google; ● eBay Motors – приложение для покупки и продажи автомобилей; ● Baidu Tieba – крупнейшая китайская коммуникационная платформа; ● KFC DSR – корпоративное приложение для KFC от Surf, которое оптимизирует документооборот в компании; ● The Hole – стриминговая платформа с более чем 16 миллионами подписчиков; приложение разработано Surf за четыре месяца.
  • 29. Примеры компаний активно использующих Flutter ● Alibaba ● Square ● Ebay ● Hamilton Musical ● Reflectly ● Groupon ● Cryptomaniac ● Realtor.com ● BMW https://flutter.dev/showcase
  • 30. Перспективы и итоги ● Молодая стремительно развивающаяся технология ● Необходимо меньше времени на написание кода и тестов ● Производительность не уступает нативной ● Возможность выйти за рамки мобильных устройств ● Растущий спрос, но все еще мало специалистов