1. Если вы хотите изучить Flutter, освойте язык Dart. Никаких вопросов не было задано!
  2. Разработчики считают его самым быстрым и выразительным способом создания нативных приложений.
  3. Благодаря своей простоте , высокой производительности в результате разработки богатого пользовательского интерфейса, Flutter окажет значительное влияние на развитие высоких -качественные, многофункциональные мобильные приложения в ближайшем будущем.
  4. Flutter предлагает меньше виджетов пользовательского интерфейса по сравнению с React и другими интерфейсными фреймворками!
  5. Горячая перезагрузка Flutter — это функция, которая позволяет ему работать быстрее. С его помощью приложение компилируется с использованием библиотеки arm C/C++, что делает его ближе к машинному коду и позволяет ему работать быстрее.
  6. Существует поддержка Good Community, где разработчики задают вопросы и очень быстро получают ответы.
  7. В отличие от большинства кроссплатформенных фреймворков, Flutter не полагается на промежуточные представления или интерпретации кода.
  8. Используя Flutter, вы можете писать код, управлять им и запускать его на нескольких платформах. Для разработчиков это экономит время, деньги и усилия.
  9. Flutter предлагает настраиваемую многоуровневую архитектуру, которая позволяет создавать настраиваемые дизайны, выразительные пользовательские интерфейсы и быструю визуализацию.
  10. Структура Flutter состоит из трех уровней: Framework Dart, Engine C/C++, Embedder Platform-specific.
  11. Платформа на основе Dart, которая заботится о виджетах приложений, жестах, анимации, иллюстрациях и материалах.
  12. Разработка приложений Flutter опирается на единую структуру и платформу для разработки, развертывания и управления изменениями, а не на использование отдельных платформ и сред для разных целей.
  13. Разработка приложений Flutter предоставляет виджеты, настроенные для Android, iOS и Google Fuchsia.
  14. Благодаря готовой библиотеке виджетов Flutter разработчики могут быстрее разрабатывать приложения при использовании фреймворка. Помимо большого разнообразия виджетов, он также включает в себя анимацию, с помощью которой вы можете оживить свое приложение.
  15. Но, поскольку Flutter относительно новый, количество сторонних библиотек невелико. Кроме того, некоторые виджеты во Flutter доступны только на одной платформе.
  16. Разработчики иногда расстраиваются, когда размер выпуска не соответствует ожидаемому.
  17. Dart — это объектно-ориентированный язык программирования, но он не может конкурировать с Java, JavaScript или C#, поскольку он все еще относительно новый. В результате не многие разработчики выбирают его.
  18. 3D-моделирование Flutter, интеграция с Unity и игровые движки не оправдывают ожиданий. Поэтому большинство рекламных мобильных платформ также не поддерживают его.
  19. Флаттер еще не так широко используется. Несмотря на то, что он пользуется вниманием технических энтузиастов, ему по-прежнему не хватает постоянной поддержки, которая придет со временем. К сожалению, единственная поддержка, которую получает Flutter, исходит от сообщества.
  20. В зависимости от вашей фазы разработки платформа компилирует ваш код разными способами или в разных режимах, которые мы назвали режимом сборки.
  21. Режим отладки. Этот режим позволяет отлаживать приложения на физическом устройстве, эмуляторе или симуляторе. Здесь включены утверждения и расширения службы. Затем быстрое развертывание достигается за счет оптимизации компиляции.
  22. В режиме профиля сохраняются некоторые возможности отладки, достаточные для анализа производительности приложения во время тестирования. Трассировка и некоторые расширения включены в этом случае. В эмуляторах и симуляторах режим профиля отключен, поскольку их поведение не воспроизводит реальную производительность.
  23. Для компиляции режима профиля можно использовать следующую команду: flutter run — profile
  24. При развертывании приложения режим выпуска используется для минимизации размера занимаемой площади и максимальной оптимизации. Здесь отключены отладка, утверждения и сервисные расширения.
  25. Как правило, приложение Flutter состоит из нескольких виджетов. Виджет — это способ объявления и создания пользовательских интерфейсов.
  26. Во флаттере виджеты можно разделить на две категории: виджеты с состоянием и виджеты без состояния.
  27. Dart, язык программирования, разработанный Google, используется для кодирования приложений Flutter, а также серверных и настольных приложений. Используя Dart, Flutter избегает использования отдельного декларативного языка компоновки, такого как JSX или XML.
  28. Разработчики могут очень легко и без усилий читать и визуализировать макет Dart, поскольку он является декларативным и программным.
  29. Массивы напрямую не поддерживаются Dart. Скорее, он поддерживает коллекцию, которая реплицирует структуру данных, такую ​​как массивы, дженерики и необязательную типизацию.
  30. В отличие от других языков программирования, он поддерживает большинство основных концепций программирования, таких как классы, интерфейсы и функции.
  31. Несмотря на схожесть с JavaScript, Dart выполняет код в несколько раз быстрее.
  32. Для повышения производительности и сокращения времени выполнения кода виртуальная машина (VM) Dart использует компиляторы как JIT, так и Ahead-of-Time (AOT).
  33. Dart — это объектно-ориентированное программирование, что делает его очень масштабируемым и стабильным для создания даже сложных приложений.
  34. Состояние приложения также может называться общим состоянием или состоянием приложения.
  35. main(): эта функция запускает программу. Flutter не позволяет нам писать программы без функции main().
  36. runApp():используя runApp(), вы можете вернуть виджеты, подключенные к экрану, в качестве корня дерева виджетов, которое будет отображаться на экране. Эта функция вызывается в основной функции, которая является драйвером приложения.
  37. Пакет — это набор классов, интерфейсов и вложенных пакетов, позволяющих создавать модульный код, который может быть легко использован пользователями.
  38. Приложения можно быстро разрабатывать с помощью пакетов, а не разрабатывать все с нуля. Вы можете импортировать новые виджеты или функции в приложение, используя пакет во Flutter.
  39. Пакеты и плагины часто называют пакетами в DartPub, и конкретные различия между ними делаются только во время создания нового пакета.
  40. Для разработки мобильных приложений Flutter IDE и инструменты требуют некоторых плагинов. С помощью этих плагинов мы можем компилировать Dart, анализировать код и разрабатывать Flutter. Две самые популярные IDE для разработки Flutter: Android Studio и Visual Studio.
  41. Ключи используются во Flutter в качестве идентификаторов для виджетов, элементов и семантических узлов. GlobalKeys и LocalKeys являются подклассами Key. В дереве виджетов ключи отвечают за сохранение состояния измененных виджетов.
  42. С помощью ключей вы также можете реорганизовать и изменять наборы виджетов, которые имеют эквивалентный тип и определенное состояние. Ключи в основном используются для изменения дерева виджетов, содержащего виджеты с состоянием, а не для изменения дерева, полностью состоящего из виджетов без состояния.
  43. По сути, во Flutter контейнер — это виджет, способный вместить несколько дочерних виджетов и эффективно управлять ими с помощью размеров, заполнения и цвета фона.
  44. Всякий раз, когда мы хотим стилизовать фон виджета из-за ограничения цвета, формы или размера, мы можем использовать виджет-контейнер.
  45. С классом Container виджеты могут храниться и располагаться на экране по нашему усмотрению.
  46. По сравнению с React Native Flutter — относительно новый фреймворк. Первоначально Flutter поддерживал другой гигант под названием Google.
  47. mainAxisAlignment — это то, как элементы выравниваются по этой оси.
  48. crossAxisAlignment — это то, как элементы выравниваются по другой оси.
  49. Виджеты строк и столбцов могут выравнивать своих дочерних элементов в соответствии с нашими предпочтениями, используя свойства crossAxisAlignment и mainAxisAlignment.
  50. Flutter — это бесплатный набор для разработки пользовательского интерфейса с открытым исходным кодом от Google, который позволяет разработчикам с легкостью создавать кроссплатформенные мобильные приложения.
  51. Первый раз, когда вы создаете приложение Flutter, это занимает гораздо больше времени, чем обычно, поскольку Flutter создает файл IPA или APK для конкретного устройства. В этом процессе используются Xcode и Gradle для создания файла, что обычно занимает много времени.
  52. Существует мощный инструмент под названием Flutter Inspector для приложений Flutter, который позволяет визуализировать схему ваших виджетов и их свойства.
  53. Мы используем тикер, чтобы сообщить, как часто наша анимация обновляется во Flutter.
  54. Множественное наследование не поддерживается Dart. Таким образом, нам нужны миксины для реализации множественного наследования во Flutter/Dart.
  55. В асинхронном программировании потоки используются для предоставления последовательности данных асинхронным способом.
  56. Flutter SDK (Software Development Kit) позволяет разработчикам создавать приложения для мобильных устройств, Интернета и настольных компьютеров, используя единую кодовую базу.
  57. Горячая перезагрузка считается отличной функцией флаттера, выполнение которой занимает примерно одну секунду. С помощью этой функции вы можете легко и быстро вносить изменения, исправлять ошибки, создавать пользовательские интерфейсы и добавлять функции. Используя функцию горячей перезагрузки, мы можем быстро скомпилировать новый код в файл и отправить его на виртуальную машину Dart (DVM).
  58. Горячая перезагрузка. Функционал немного отличается от горячей перезагрузки. При этом сохраненные состояния нашего приложения уничтожаются, а код снова компилируется с самого начала.
  59. BuildContexts используются для идентификации или поиска виджетов в деревьях виджетов.
  60. Каждый виджет имеет свой собственный BuildContext, то есть один BuildContext на виджет. По сути, мы используем его для поиска ссылок на другие виджеты и темы.
  61. Кроме того, вы можете использовать его для взаимодействия с родительскими элементами виджета и доступа к данным виджета.
  62. Используя модульное тестирование, вы можете протестировать класс или метод. Модульные тесты не проверяют отрисовку на экране, взаимодействие с внешними службами или взаимодействие с пользователем.
  63. Используя тестирование виджета, вы можете протестировать один виджет. Это гарантирует, что пользовательский интерфейс виджета выглядит так, как ожидается, и правильно реагирует на события. Другими словами, это гарантирует, что дизайн виджета, рендеринг и взаимодействие с другими виджетами находятся на должном уровне.
  64. Используя интеграционное тестирование, вы можете протестировать критические потоки всего приложения. Важно проверить, все ли виджеты и сервисы работают вместе должным образом. Вы также можете использовать его для измерения и оценки производительности вашего приложения.
  65. Независимо от того, создаете ли вы мобильное приложение или веб-приложение, управление состоянием имеет решающее значение. Используя его, состояния различных элементов управления пользовательского интерфейса централизованы для обработки потока данных в приложении.
  66. Это может быть текстовое поле, переключатель, флажок, раскрывающийся список, переключатель, форма и так далее. Во Flutter управление состоянием можно разделить на два типа: эфемерное состояние или состояние приложения.
  67. Эфемерное состояние.Эфемерное состояние также называется состоянием пользовательского интерфейса или локальным состоянием и относится к конкретному виджету. Другими словами, это состояние, которое содержится в конкретном виджете. С помощью StatefulWidget Flutter обеспечивает поддержку этого состояния.
  68. Состояние приложения. Оно отличается от эфемерного состояния, поскольку это состояние, которое мы намерены использовать в разных частях приложения и которое мы хотим поддерживать между сеансами. Таким образом, эти типы состояний можно использовать глобально. С помощью scoped_model Flutter обеспечивает поддержку этого состояния.
  69. Файл pubspec.yaml, также известный как «pubspec», — это файл, который включается при создании проекта Flutter и находится в верхней части дерева проекта. Этот файл содержит информацию о зависимостях, таких как пакеты и их версии, шрифты и т. д., которые требуются для проекта.
  70. Укороченная версия промежуточной анимации называется твин-анимация. Начальная и конечная точки анимации должны быть указаны в анимации движения.
  71. Используя этот метод, анимация может начинаться с самого начала и может проходить через серию значений, пока не достигнет конечной точки. Скорость и продолжительность перехода также определяются с помощью анимации движения. Расчет перехода от начала к концу будет проще с фреймворком виджетов.
  72. Для создания HTTP-запросов используйте пакет HTTP (импортируйте «package:http/http.dart» как http;). Запросы мы можем делать следующим образом:http.get(‘https://jsonplaceholder.typicode.com/albums/1‘);
  73. Что касается Flutter, широко распространены и используются в основном следующие пакеты баз данных: база данных Firebase и база данных SQLITE3.
  74. База данных Firebase. Предоставляет пользователям доступ к облачной базе данных и контроль над ней. Firebase в основном предоставляет базу данных NoSQL для приложений Flutter с возможностью управления извлечением и хранением данных по протоколу JSON.
  75. База данных SQFlite: пользователи могут получать доступ и изменять базу данных SQLite, используя это. С этой базой данных у вас есть полный контроль над вашей базой данных, запросами, отношениями и всем, что вы можете пожелать.
  76. Провайдер построен с использованием виджетов. Вы можете использовать все объекты в провайдере, как если бы они были просто частью Flutter с новыми подклассами виджетов, которые он создает. Это также означает, что провайдер не является кроссплатформенным. Провайдер — это самый простой способ управления состоянием.
  77. Пока асинхронный метод не завершится, await прерывает поток процесса. Ожидание обычно означает: Подождите здесь, пока эта функция не завершит работу, чтобы вы могли получить возвращаемое ею значение. Ожидание можно использовать только с асинхронным. При этом все запущенные в данный момент функции приостанавливаются до тех пор, пока природа PF не будет завершена.
  78. SizedBox: это поле определенного размера. Он не позволяет нам устанавливать цвет или оформление виджета, в отличие от Container. В этом случае нам нужно только изменить размер виджета, который передается как дочерний элемент. Другими словами, он заставляет свой дочерний виджет иметь определенный размер.
  79. Операторы, поддерживающие нуль, в dart позволяют выполнять вычисления в зависимости от того, является ли значение нулевым. Dart предоставляет некоторую полезную информацию для обработки нулевых значений.
  80. Оператор присваивания «??=»: он присваивает значение переменной только в том случае, если оно равно null.
  81. «?» Оператор безопасной навигации: он также известен как оператор Элвиса. Можно использовать ?. оператор при вызове метода/геттера для объекта, если объект не является нулевым (иначе метод вернет нуль).
  82. Для каждого тика в тикере предоставляется метод обратного вызова, который имеет время с момента первого тика в каждую секунду с момента его запуска.
  83. Инструментарий Flutter поддерживает три режима при компиляции вашего приложения и безголовый режим для тестирования.
  84. Вы выбираете режим компиляции в зависимости от того, на каком этапе цикла разработки вы находитесь.
  85. Доступны следующие режимы: — Отладка — Профиль — Выпуск
  86. Dart позволяет Flutter избежать необходимости в отдельном языке декларативного макета, таком как JSX или XML, или в отдельных конструкторах визуального интерфейса, поскольку декларативный программный макет Dart легко читается и визуализируется. .
  87. Благодаря тому, что весь макет на одном языке и в одном месте, Flutter легко предоставляет расширенные инструменты, которые упрощают макет.
  88. Виджеты — это, по сути, компоненты пользовательского интерфейса во Flutter.
  89. Это способ описать конфигурацию элемента.
  90. Они вдохновлены компонентами в React.
  91. В Dart обязательные параметры — это аргументы, которые передаются функции, и функции или методу требуются все эти параметры для завершения блока кода.
  92. В Dart необязательные параметры определяются в конце списка параметров после любых обязательных параметров.
  93. Во Flutter/Dart существует 3 типа необязательных параметров: — Named — Параметры, заключенные в { }, Positional — Параметры, заключенные в [ ], Default — Присвоение параметру значения по умолчанию.
  94. В дартс есть два вида потоков
  95. Потоки с одной подпиской — наиболее распространенный вид потоков. — Он содержит последовательность событий, которые являются частями большего целого. События должны быть доставлены в правильном порядке и не пропустить ни одно из них. — Такой поток вы получаете, когда читаете файл или получаете веб-запрос. Такой поток можно прослушать только один раз.
  96. Повторное прослушивание позже может означать пропуск начальных событий, и тогда остальная часть потока не имеет смысла. — Когда вы начнете слушать, данные будут извлекаться и предоставляться кусками.
  97. Широковещательные потоки: предназначены для отдельных сообщений, которые можно обрабатывать по одному. Этот тип потока можно использовать, например, для событий мыши в браузере.
  98. Новый виджет будет использоваться для обновления существующего элемента только в том случае, если его ключ совпадает с ключом текущего виджета, связанного с элементом.
  99. Ключи должны быть уникальными среди элементов с одним и тем же родителем.
  100. Ключи полезны при работе с коллекциями виджетов одного типа.
  101. BLoC означает компоненты бизнес-логики. Это помогает в управлении состоянием и обеспечивает доступ к данным из центрального места в вашем проекте.