ФРЕЙМВОРК ДЛЯ КРОСС-ПЛАТФОРМЕННОЙ РАЗРАБОТКИ «FLUTTER»

Лыкасов Александр Анатольевич
Уфимский университет науки и технологий, Нефтекамский филиал
студент 3 курса Факультет экономико-математический

Аннотация
В этой статье описывается популярный фреймворк Flutter, на котором строятся кросс-платформенные приложения с единой кодовой базой что уменьшает сроки создания приложения. Flutter создана и поддерживается Google.

Ключевые слова: , , , , , , , , ,


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Лыкасов А.А. Фреймворк для кросс-платформенной разработки «Flutter» // Современные научные исследования и инновации. 2024. № 1 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2024/01/101322 (дата обращения: 22.04.2024).

Научный руководитель: Вильданов Алмаз Нафкатович
к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал, г. Нефтекамск

 

Flutter – это открытая и мощная платформа разработки мобильных приложений, разработанная и поддерживаемая компанией Google. Она позволяет разработчикам создавать красивые и высокопроизводительные приложения, работающие как на iOS, так и на Android, используя один общий код.

Одна из ключевых особенностей Flutter – это его возможность создания кросс-платформенных приложений с использованием одного и того же кода для разных платформ. Это позволяет разработчикам значительно сократить время и усилия, затрачиваемые на разработку и поддержку приложений для разных операционных систем. Кроме того, Flutter обеспечивает высокую производительность приложений благодаря своей нативной архитектуре, которая позволяет более эффективно использовать ресурсы устройства.

Flutter использует язык программирования Dart, разработанный Google, как основной язык для разработки приложений. Dart является современным и эффективным языком, который обладает простым синтаксисом и мощными возможностями. Он предоставляет разработчикам широкий набор инструментов и библиотек для создания сложных приложений, таких как отрисовка пользовательского интерфейса, обработка событий и многое другое.

Flutter также предлагает богатую набор библиотек и виджетов, которые облегчают создание красивого и интерактивного пользовательского интерфейса. Благодаря гибкой и модульной архитектуре Flutter, разработчики могут легко создавать собственные компоненты и переиспользовать их в различных проектах, что ускоряет процесс разработки и улучшает качество приложений.

В фреймворке Flutter виджеты являются основными строительными блоками пользовательского интерфейса. Они представляют собой небольшие и независимые элементы, которые могут включать в себя текст, изображения, кнопки и другие компоненты.

Виджеты в Flutter имеют иерархическую структуру, где каждый виджет может содержать другие виджеты и сам быть деревом вложенных виджетов. На вершине иерархии находится виджет MaterialApp, который представляет собой основу всего приложения.

Flutter предоставляет множество встроенных виджетов, которые можно использовать для создания интерфейса. Некоторые из самых распространенных виджетов включают:

Text: Виджет для отображения текста. Он позволяет настроить шрифт, размер, цвет текста и многое другое.

Image: Виджет для отображения изображений. Он может загружать изображения из локального хранилища, сети и других источников.

Container: Виджет для создания прямоугольной области с заданными свойствами, такими как цвет фона, отступы, границы и прочее.

ListView: Виджет для отображения списка элементов. Он может быть вертикальным или горизонтальным и позволяет прокручивать большие списки.

Button: Виджеты для создания кнопок. Flutter предоставляет различные виды кнопок, включая текстовые кнопки, иконки и другие.

TextField: Виджет для ввода текста. Он позволяет пользователю вводить и редактировать текст с возможностью настройки внешнего вида и поведения.

Scaffold: Виджет для создания базового макета приложения, который включает в себя различные элементы, такие как AppBar, Drawer и другие.

Все виджеты имеют имена, свойства и методы, которые позволяют настроить их внешний вид и поведение. Кроме встроенных виджетов, Flutter также предоставляет возможность создавать собственные пользовательские виджеты, путем комбинирования их из других виджетов или путем наследования от базового класса StatelessWidget или StatefulWidget.

Гибкость встроенных и пользовательских виджетов делает Flutter мощным инструментом для создания красивых и интерактивных пользовательских интерфейсов. В сочетании с современным языком программирования Dart, Flutter обеспечивает высокую производительность и быструю разработку приложений для множества платформ, включая iOS, Android, веб и десктоп.

Отличительной чертой Flutter является его “горячая перезагрузка”, что позволяет разработчикам мгновенно просматривать изменения в коде без необходимости перезапуска всего приложения. Это значительно ускоряет и упрощает процесс разработки и тестирования приложений.

Кроме того, Flutter имеет активное сообщество разработчиков, которое постоянно вносит новые идеи, решает проблемы и делится своим опытом. Это сообщество предлагает множество ресурсов, таких как документация, учебные материалы и форумы, которые помогают новым разработчикам быстро освоить платформу и решить возникающие проблемы.

В целом, Flutter является мощным и эффективным инструментом для разработки кросс-платформенных мобильных приложений. Он предоставляет разработчикам широкий набор инструментов и библиотек для создания высококачественных приложений, которые могут работать на разных платформах без необходимости написания отдельного кода.

Вот еще некоторые преимущества Flutter:

1. Быстрая разработка: Flutter предлагает широкий набор возможностей и инструментов для быстрой и эффективной разработки. Возможность использовать один общий код для разных платформ позволяет сэкономить время и усилия, которые обычно требуются для разработки разных версий для разных операционных систем.

2. Гибкий и выразительный интерфейс: С помощью Flutter вы можете создавать высококачественные пользовательские интерфейсы с помощью богатой библиотеки виджетов. Flutter предлагает множество стилей, анимаций и эффектов, которые позволяют создавать интерактивные и привлекательные приложения.

3. Высокая производительность: Благодаря нативной архитектуре, Flutter обеспечивает высокую производительность приложений. Он использует операционную систему устройства напрямую, что позволяет достичь высокой скорости и эффективности.

4. Активная поддержка и обновления: Flutter поддерживается компанией Google, что означает, что он активно развивается и обновляется. Google также предоставляет обширную документацию и ресурсы для разработчиков, что делает процесс разработки более удобным и эффективным.

5. Кросс-платформенная поддержка: Flutter поддерживает не только iOS и Android, но также может быть использован для разработки приложений для веба и десктопа. Это позволяет разработчикам создавать приложения, которые работают на разных платформах и устройствах.

6. Богатый экосистем: Flutter обладает широкой и процветающей экосистемой, включая библиотеки и плагины, которые облегчают разработку и расширяют возможности фреймворка. Такие инструменты, как Flutter Packages Pub, предоставляют доступ к тысячам готовых модулей и компонентов, которые можно легко интегрировать в проект.

7. Горячая перезагрузка: Одной из наиболее впечатляющих функций Flutter является “горячая перезагрузка”. Она позволяет разработчикам мгновенно просматривать изменения, вносимые в код, без необходимости перезапуска всего приложения. Это значительно ускоряет процесс разработки и обновления приложений.

8. Доступ к нативным возможностям: Flutter предоставляет разработчикам прямой доступ к нативным возможностям устройства, таким как камера, геолокация, датчики и многое другое. Это позволяет создавать приложения, которые взаимодействуют с аппаратной частью устройства и полностью используют его потенциал.

9. Широкая поддержка сторонних платформ: Flutter получил широкую поддержку от сторонних компаний и сообщества разработчиков. Это означает, что вы можете найти решения, инструменты и поддержку от других разработчиков, что упрощает процесс разработки и расширяет возможности фреймворка.

10. Быстрая растущая популярность: Flutter становится все более популярным среди разработчиков мобильных приложений. Большое количество компаний и команд разработчиков выбрали Flutter для своих проектов благодаря его преимуществам и возможностям. Это создает больше возможностей для совместной работы и обмена опытом с другими разработчиками.

Пример кода простейшего счетчика:

import ‘package:flutter/material.dart’;

class NumberCounter extends StatefulWidget {

@override

_NumberCounterState createState() => _NumberCounterState();

}

class _NumberCounterState extends State<NumberCounter> {

int _count = 0;

void _increment() {

setState(() {

// Увеличиваем счетчик на 1 при каждом нажатии

_count++;

});

}

void _decrement() {

setState(() {

// Уменьшаем счетчик на 1 при каждом нажатии

_count–;

});

}

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: const Text(‘Счетчик чисел’),

),

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

Text(

// Отображаем текущее значение счетчика

'$_count',

style: TextStyle(fontSize: 24),

),

SizedBox(height: 16),

Row(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

FloatingActionButton(

onPressed: _decrement,

tooltip: 'Уменьшить',

child: Icon(Icons.remove),

),

SizedBox(width: 16),

FloatingActionButton(

onPressed: _increment,

tooltip: 'Увеличить',

child: Icon(Icons.add),

),

],

),

],

),

),

);

}

}

void main() {

runApp(MaterialApp(

home: NumberCounter(),

));

}

Обратите внимание на следующие ключевые моменты:

Создается класс NumberCounter, который расширяет StatefulWidget. Это позволяет создавать виджеты, которые могут изменять свое состояние.

Затем создается приватный класс _NumberCounterState, который расширяет State<NumberCounter>. Он хранит состояние счетчика _count.

Функции _increment и _decrement изменяют значение _count и вызывают setState, чтобы уведомить Flutter о необходимости перестроить пользовательский интерфейс.

В методе build создается интерфейс пользователя с помощью виджетов Scaffold, AppBar, Column, Text и FloatingActionButton. При нажатии на кнопки уменьшения и увеличения вызываются соответствующие функции.

В функции main создается объект NumberCounter и передается в MaterialApp. Это обеспечивает визуализацию счетчика чисел в качестве корневого виджета в приложении Flutter.

Это лишь базовый пример, который можно расширить и настроить по своему усмотрению.

Менеджеры состояний:

Менеджеры состояний во Flutter – это классы, которые помогают управлять состоянием виджетов. Они позволяют обновлять данные и перестраивать виджеты в соответствии с новым состоянием.

В Flutter существует несколько подходов к управлению состоянием виджетов:

setState: Этот подход является самым простым и основным в Flutter. Он используется для обновления состояния виджета путем вызова метода setState. При вызове setState Flutter перестраивает виджет, чтобы отразить новое состояние.

class MyWidget extends StatefulWidget {

@override

_MyWidgetState createState() => _MyWidgetState();

}

class _MyWidgetState extends State<MyWidget> {

int _counter = 0;

void _incrementCounter() {

setState(() {

_counter++;

});

}

@override

Widget build(BuildContext context) {

return Scaffold(

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

Text('Counter:', style: TextStyle(fontSize: 24)),

Text('$_counter', style: TextStyle(fontSize: 48)),

],

),

),

floatingActionButton: FloatingActionButton(

onPressed: _incrementCounter,

child: Icon(Icons.add),

),

);

}

}

Provider: Provider – это библиотека состояний, которая позволяет обмениваться данными между виджетами. Он основан на паттерне проектирования “Observer”. Provider предлагает гибкую и эффективную систему управления состоянием.

// Установка пакета provider

dependencies:

flutter:

sdk: flutter

provider: ^5.0.0

class Counter with ChangeNotifier {

int _count = 0;

int get count => _count;

void increment() {

_count++;

notifyListeners();

}

}

class MyWidget extends StatelessWidget {

@override

Widget build(BuildContext context) {

final counter = Provider.of<Counter>(context);

return Scaffold(

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

Text('Counter:', style: TextStyle(fontSize: 24)),

Text('${counter.count}', style: TextStyle(fontSize: 48)),

],

),

),

floatingActionButton: FloatingActionButton(

onPressed: () => counter.increment(),

child: Icon(Icons.add),

),

);

}

}

BLoC (Business Logic Component, “Компонент бизнес-логики”): BLoC – это паттерн, который управляет потоком данных в приложении. Он отделен от пользовательского интерфейса и обеспечивает единообразный доступ к данным и управляет их изменением.

// Установка пакета bloc

dependencies:

flutter:

sdk: flutter

bloc: ^7.0.0

class CounterBloc {

int _count = 0;

final _counterStreamController = StreamController<int>();

Stream<int> get counterStream => _counterStreamController.stream;

void increment() {

_count++;

_counterStreamController.sink.add(_count);

}

void dispose() {

_counterStreamController.close();

}

}

class MyWidget extends StatelessWidget {

final _counterBloc = CounterBloc();

@override

Widget build(BuildContext context) {

return Scaffold(

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

Text('Counter:', style: TextStyle(fontSize: 24)),

StreamBuilder<int>(

stream: _counterBloc.counterStream,

builder: (context, snapshot) {

return Text('${snapshot.data ?? 0}',

style: TextStyle(fontSize: 48));

},

),

],

),

),

floatingActionButton: FloatingActionButton(

onPressed: () => _counterBloc.increment(),

child: Icon(Icons.add),

),

);

}

@override

void dispose() {

_counterBloc.dispose();

super.dispose();

}

}

Это только некоторые из возможных менеджеров состояний, которые можно использовать в Flutter. Важно выбирать подходящий менеджер
состояний в зависимости от конкретных потребностей вашего приложения.

Архитектура:

Одной из популярнейщих архитектур во Flutter является clean architecture.

Clean Architecture в контексте Flutter – это архитектурный подход, который помогает создавать модульные, расширяемые и тестируемые приложения на Flutter. Он основан на принципе разделения ответственности (Separation of Concerns) и принципе инверсии зависимостей (Dependency Inversion Principle).

В Clean Architecture приложение разделяется на различные уровни, каждый из которых отвечает за определенную область ответственности. Внешние уровни зависят от внутренних уровней, но не наоборот. Это создает слабую связанность между различными компонентами приложения и делает их легко заменяемыми.

Основные компоненты в Clean Architecture:

Presentation Layer (представление): В этом слое находится весь код, относящийся к пользовательскому интерфейсу. В случае Flutter это могут быть виджеты, роуты и другие элементы UI. В Clean Architecture данный слой не должен содержать бизнес-логику, а только логику, связанную с отображением данных и пользовательским взаимодействием.

Domain Layer (доменная логика): Здесь находится бизнес-логика приложения. Она не зависит от аспектов, связанных с пользовательским интерфейсом или внешними библиотеками. Вместо этого она содержит чистую бизнес-логику, такую как модели данных, правила и операции, связанные с бизнес-процессами.

Data Layer (данные): Здесь находятся все компоненты, связанные с доступом к данным, такие как источники данных, базы данных или сетевые запросы. Этот слой отвечает за получение и сохранение данных, не зависит от бизнес-логики, а только предоставляет необходимые данные.

Domain Layer (инфраструктура): Этот слой содержит основные механизмы, которые связывают предыдущие три слоя. Он обеспечивает взаимодействие между представлением, доменной логикой и данными. Например, здесь может находиться код, отвечающий за преобразование данных между различными форматами (например, JSON и моделями данных).

Clean Architecture в контексте Flutter позволяет создавать приложения, которые являются независимыми от конкретной платформы и легко тестируются. Он также обеспечивает хорошую организацию кода, упрощает сопровождение и повторное использование компонентов.


Библиографический список
  1. Flutter – Beautiful native apps in record time. (2022). Flutter.dev. Retrieved from https://flutter.dev
  2. Pagliuca, J. (2021). Flutter in Action. Manning Publications.
  3. Flutter Documentation. (2022). Retrieved from https://flutter.dev/docs
  4. Sahu, R. (2021). Hands-On Flutter for Web Development. Packt Publishing.
  5. Ray, E. (2021). Flutter Projects. Packt Publishing.


Количество просмотров публикации: Please wait

Все статьи автора «Лыкасов Александр Анатольевич»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться:
  • Регистрация