Комментарии 8
Местами ощущение, что текст сгенерирован роботом.
И вопрос по коду: ЗАЧЕМ?bool get isWindows => !kIsWeb && Platform.isWindows;
Что мешает сразу использовать Platform.isWindows?
Или он может сработать в паре с kIsWeb
? И в каком случае оба true?
Вместо разъяснения сути в статье под этим примером куча очевидных истин.
Такое ощущение может быть из-за моего уровня английского, сформулировать правильно прочитанную мысль и передать её не всегда получается точно, поэтому перевод "грубый". Я ведь делюсь не своими знаниями, а совокупностью найденной информации и которую считаю интересной по моему сугубому мнению.
Куча очевидных истин для Вас, для меня совсем не очевидны, так как я в самом начале изучения.
Так это перевод? По тексту нет об этом сообщения, нет и ссылки на источник. В таком случае претензии к автору исходного текста. Какой-то набор казусов.
В библиотеке dart.io, о которой он аж два раза повторяет в комментарии к коду, есть свойство
sWindows property
bool isWindowsfinal
Whether the operating system is a version of Microsoft Windows.
Но автор объявляет своё собственное свойство. Он патчит исходное. Теперь оно работает не так, как задумано разработчиками dart.io:
bool get isWindows => !kIsWeb && Platform.isWindows;
Зачем это? Почему проверка только для Web? А остальные операционные системы? Ну давайтетак напишем:
bool get isWindows => !kIsWeb && !Platform.isAndroid && !Platform.isMacOS && !............ && Platform.isWindows;
Зачем все эти танцы с бубном?
В мусорку такие идеи, не иначе. Иначе они замусорят ваш код.
Тут дело в том, что Platform не доступно из веба и если его таким образом не "прикрыть", то это все в вебе просто упадет )
то это все в вебе просто упадет
Недоступен не только Platfotm, а dart:io в целом. А оно не то, что упадëт, оно вообще соберëтся?
Это же решается через Conditional Imports https://dart.dev/guides/libraries/create-packages#conditionally-importing-and-exporting-library-files
Оно не упадёт: оно не соберётся, т.к. dart.io недоступна в веб
Быть может, не сойти сума линковщику помогает этот избранный импорт....?import 'dart:io' show Platform;
Загадка....
Для таких случаев есть defaultTargetPlatform - тут не потребуется импорт dart:io или dart:html
https://api.flutter.dev/flutter/foundation/TargetPlatform.html
Завести до проверки на тип платформы целочисленную переменную count = 0; Color color изменять их по результатам проверки и передавать в единственный виджет _buildContaner(count, color), в котором в цикле со счетчиком вы разворачиваете количество контейнеров указанное в переменной count и передаете им цвет, много кода уходит.
Разработка интерфейса | Flutter