Свадьба
Я женился☺️
Делюсь с вами частью фото.
Пока ещё необработанными, так как их 2500😁
P.S. Жаль telegram качество сжимает
Я женился
Делюсь с вами частью фото.
Пока ещё необработанными, так как их 2500
P.S. Жаль telegram качество сжимает
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Хорошее объяснение FutureOr 🧑🎓
Please open Telegram to view this post
VIEW IN TELEGRAM
api.flutter.dev
FutureOr class - dart:async library - Dart API
API docs for the FutureOr class from the dart:async library, for the Dart programming language.
Forwarded from Flutter Friendly
Привет, с вами Роза, Flutter Dev Friflex👋 И сегодня мы немного погрузимся в магию FutureOr!
Представьте, вы создаете некий абстрактный класс с различными методами, но точно не знаете, будет ли реализация асинхронной или синхронной. Конечно, вы можете создать два метода или изощряться с разными подходами, но действительно ли это хорошее решение?
Лучше, если вы объявите метод, как FutureOr.
Звучит пока не очень понятно? Давайте разберемся на примерах.
Предположим, мы разрабатываем сервис, который получает данные. Одна реализация будет синхронной, другая — асинхронной:
Aбстрактный класс
⚙️ Когда же использовать FutureOr?
FutureOr — ваш спаситель, когда вам нужно абстрагироваться от того, является ли результат операции асинхронным или синхронным.
🔧 Как обрабатывать FutureOr?
Самый простой способ — использовать проверку типа с помощью is Future.
Да, такой вариант решения может показаться не самым элегантным. Ведь чрезмерное использование is Future может запутать логику и сделать код менее читаемым. Но в некоторых случаях, особенно при работе с абстракциями, это вполне рабочий и понятный подход.
У меня с работой так же. Иногда мне нужен await, чтобы подумать, а иногда все складывается супер. А у вас?
Представьте, вы создаете некий абстрактный класс с различными методами, но точно не знаете, будет ли реализация асинхронной или синхронной. Конечно, вы можете создать два метода или изощряться с разными подходами, но действительно ли это хорошее решение?
Лучше, если вы объявите метод, как 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 — ваш спаситель, когда вам нужно абстрагироваться от того, является ли результат операции асинхронным или синхронным.
Самый простой способ — использовать проверку типа с помощью is Future.
Да, такой вариант решения может показаться не самым элегантным. Ведь чрезмерное использование is Future может запутать логику и сделать код менее читаемым. Но в некоторых случаях, особенно при работе с абстракциями, это вполне рабочий и понятный подход.
У меня с работой так же. Иногда мне нужен await, чтобы подумать, а иногда все складывается супер. А у вас?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM