TGViewer
Дневник Flutter-разработчика Дневник Flutter-разработчика @diaryflutterdev · 2.66K subscribers
Post #794 2.54K

Forwarded from Flutter Friendly

Привет, с вами Роза, Flutter Dev Friflex👋 И сегодня мы немного погрузимся в магию FutureOr!

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

Лучше, если вы объявите метод, как FutureOr. FutureOr<T> — это такой хитрый тип в Dart, который говорит: «Эй, результат моего метода может быть либо обычным значением типа T, либо Future<T>, если вдруг придется подождать».

Звучит пока не очень понятно? Давайте разберемся на примерах.

Предположим, мы разрабатываем сервис, который получает данные. Одна реализация будет синхронной, другая — асинхронной:

import 'dart:async';

abstract class SomeService {
  FutureOr<String> fetch();
}

class FirstImplService extends SomeService {
  @override
  Future<String> fetch() async {
    await Future.delayed(Duration(seconds: 2));
    return 'Данные из Future';
  }
}

class SecondImplService extends SomeService {
  @override
  String fetch() {
    return 'Простые данные';
  }
}


Aбстрактный класс SomeService объявляет метод fetch() с типом возвращаемого значения FutureOr<String>. Это значит, что fetch() может вернуть либо String, либо Future<String>.

⚙️Когда же использовать FutureOr?
FutureOr — ваш спаситель, когда вам нужно абстрагироваться от того, является ли результат операции асинхронным или синхронным.

🔧Как обрабатывать FutureOr?
Самый простой способ — использовать проверку типа с помощью is Future.

Да, такой вариант решения может показаться не самым элегантным. Ведь чрезмерное использование is Future может запутать логику и сделать код менее читаемым. Но в некоторых случаях, особенно при работе с абстракциями, это вполне рабочий и понятный подход.

У меня с работой так же. Иногда мне нужен await, чтобы подумать, а иногда все складывается супер. А у вас?
  • 👍 16
  • ✍ 3
  • 🔥 2
  • ❤ 1
  • 💔 1
More from @diaryflutterdev
  1. Sep 5, 2026🔥🔥 Flutter: от мобайла к авто Мультимедийка в 2026 Toyota RAV4 и Lexus ES написана на Fl…
  2. Aug 19, 2026Post #887
  3. Aug 3, 2026👨‍💻Официальный плагин claude-security от Anthropic У claude вышел официальный плагин cla…
  4. Jul 10, 2026🧑‍💻 Аудит кодовой базы на Fable 5 Если у вас есть подписка на Claude Code, наверняка вы…
  5. Jun 29, 2026Скуфизация? Дескуфизация До/после Год регулярных тренировок в зале. Не топ, но в разы лучш…
  6. Jun 20, 2026✍️ Вопрос-ответ 🟢Ответил в чате, возможно и вам будет полезно, как локализовать 8тыс уник…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →