Быстрый старт Flutter-разработчика. Андрей Алеев
Чтение книги онлайн.

Читать онлайн книгу Быстрый старт Flutter-разработчика - Андрей Алеев страница 8

СКАЧАТЬ style="font-size:15px;">      Если вы знакомы с исключениями по Java, то вкратце – все исключения в Dart unckecked. Иначе говоря, все исключения в Dart происходят в Runtime-е. Функция, которая может выбросить исключение, не обязана объявлять об этом в своей сигнатуре, а использовать эту функцию, соответственно, не обязательно в блоке try catch. Еще одно отличие от Java в том, тип исключения указывается после слова on

      void getException () {

          throw Exception (’bam!»);

      }

      try {

          getException ();

      } on Exception {

          // do something

      } catch (e) {

         print («Произошла ошибка: $e’);

      } finally {

          // После слова finally код выполнится обязательно

      closeDatabase ();

      }

      При отлавливании исключений можно использовать и on, и catch, и оба одновременно. сatch будет использоваться для доступа к объекту exception.

      Использование библиотек

      Чтобы импортировать библиотеку, пространство имен или класс, необходимо в верхней части файла прописать путь к ним после слова import

      import ’package: shapes/geometric. dart’;

      import ’package: abstracts/colored. dart’ as colored;

      …

      // Используем Rectangle из библиотеки geometric.

      Rectangle rectangle1 = Rectangle ();

      // используем Rectangle из библиотеки colored.

      colored.Rectangle rectangle2 = colored.Rectangle ();

      При использовании указанного выше способа загрузки библиотек, они загружаются сразу. Чтобы они загружались по требованию, им можно добавить модифиаткор defferd as

      import ’package: abstracts/colored. dart’ deffered as colored;

      И затем в нужный момент загрузить с помощью функции loadLibrary ():

      Future greet () async {

          await colored. loadLibrary ();

      hello.printGreeting ();

      }

      Компиляция

      Написанный на Dart код нужно скомпилировать под целевую платформу. Поскольку Dart – это язык общего назначения, он может компилироваться как по паттерну JIT (Just In Time), так и по паттерну AOT (Ahead Of Time).

      Отличие JIT от AOT в том, что при JIT код компилируется непосредственно перед использованием. Пример JIT – это JavaScript и движок V8 Chromim-a. При этом мы не зависим от архитектуры платформы, однако код может компилироваться долго в рантайме, что ощутимо замедлит быстродейтсвие.

      В случае с AOT мы заранее компилируем весь код проекта и получаем бинарный файл. Пример – это С++, Java (JVM). На выходе мы получаем быстродействующее приложение, но под одну целевую платформу, под другую платформу нужен уже другой бинарник.

      Как работает Flutter? В зависимости от способа сборки – по разному. В случае сборки release iOS используется AOT. Для release Android может использоваться как AOT, так и CoreJIT (вариация AOT).

      При разработке мы хотим видеть изменения быстро, и у нас есть такая возможность – Hot Reload. Он как раз-таки и работает по паттерну JIT. Платформа формирует некие снимки состояния – snapshots, которые затем переиспользуются.

      Типы snapshot- ов

      Использование snapshot-ов в debug режиме

      Использование snapshot-ов в release режиме

      Итоги обзора

      Dart – мощный инструмент разработки, впитавший в себя многое от Java, Javascript и других языков, успешно применямых в промышленной разарботке. Перейти на Dart программистам, писавшим ранее СКАЧАТЬ