Не сбивайте пользователя с толку, создайте хорошую обработку ошибок при разработке приложения.

Наша основная задача как разработчиков — создавать приложения для решения определенных задач. При публикации разрабатываемое нами приложение может выдавать некоторые ошибки перед пользователем. Например, возможно, наши пользователи неправильно вводят данные, потеряно соединение или даже наш сервер не работает.

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

В этой статье я покажу, как создать хорошую обработку ошибок в проекте Flutter с помощью Dartz.



Выполнение

Прежде всего, нам нужно выяснить, какие ошибки возможны, которые могут произойти. Например, в потоке входа в систему распространенная ошибка:

  • Пользователь вводит неправильный пароль или адрес электронной почты не зарегистрирован
  • На сервере может быть проблема
  • Потеряно интернет-соединение

Теперь добавим нужный нам пакет в файл pubspec.yaml:

...
dependencies:
    flutter:
        sdk: flutter
    
    dartz: ^0.10.1
    ...

Внутри пакета Dartz мы будем использовать класс Either<L,R>. Этот класс будет использоваться для возврата двух разных вещей в функции.

Есть функция с типом Future<Either<LoginFailure, bool>>. С этим типом теперь я могу вернуть две разные вещи из этой функции.

Если запрос выполнен успешно (с кодом состояния 200), в качестве правильного значения будет возвращено логическое значение true.

Если запрос не удался, я могу легко обработать его, вернув enum в качестве левого значения. Класс enum действует как помощник для создания условий.

И вот как мы используем функцию входа в систему, например, в controller:

Теперь вы можете создавать такие взаимодействия с пользователем.

Резюме

Итак, вот как реализовать хорошую обработку ошибок во Flutter. Термин «хороший» означает, что наше приложение имеет более богатую обработку ошибок, чтобы помочь пользователю понять, если что-то не так, когда он использует приложение.

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