Можно ли перенести приложение Flutter Material в приложение на платформе по одному экрану за раз? - PullRequest
0 голосов
/ 14 июля 2020

Я создаю свое первое приложение с использованием Flutter & Dart для работы как на iOS, так и на Android. Я начал с того, что написал все это как приложение для материалов, но теперь, если возможно, я хотел бы использовать что-то вроде пакета Flutter Platform, чтобы я мог iOS выглядеть и ощущать iPad / iPhone и внешний вид материалов. на Android устройствах. Моя проблема в том, что я использую некоторые виджеты Material, которых нет в пакете Cupertino, и поэтому мне, возможно, придется переписать версии этих виджетов "iOS:". Это нормально, но если мне нужно это сделать, я бы хотел делать это итеративно, а не как «большой взрыв», чтобы быть уверенным, что я ничего не сломал по пути :-) Итак, я переехал домой страницу на платформу, и все хорошо в симуляторе iOS, но в тот момент, когда я перехожу на другую страницу, которая все еще является виджетами Материалов, я получаю такие ошибки:

    ════════ Exception caught by widgets library ═══════════════════════════════════
    The following assertion was thrown building PopupMenuButton<int>(dirty, dependencies: [_LocalizationsScope-[GlobalKey#466cd]], state: PopupMenuButtonState<int>#bcfe9):
    No MaterialLocalizations found.
    
    PopupMenuButton<int> widgets require MaterialLocalizations to be provided by a Localizations widget ancestor.
    Localizations are used to generate many different messages, labels, and abbreviations which are used by the material library.

To introduce a MaterialLocalizations, either use a MaterialApp at the root of your application to include them automatically, or add a Localization widget with a MaterialLocalizations delegate.

Я пробовал все способы, которыми могу подумайте о том, чтобы Google «добавить виджет локализации с делегатом MaterialLocalizations» и не могу найти ничего, что могло бы помочь (я думал, что это Как мне обернуть CupertinoApp в виджет локализации, чтобы я мог использовать виджеты материалов внутри это? , но я не понимаю ответа :-()?

Может ли кто-нибудь подсказать, как я могу избежать этой ошибки при работе на iOS, прежде чем переопределить виджет, который использует PopUpMenuButton специально для iOS (PopUpMenuButton отсутствует в пакетах Platform или Cupertino, насколько я могу судить)?

Кроме того, есть еще несколько интересных элементы управления в библиотеке виджетов Material, которые я хотел бы использовать на iOS, хотя, возможно, мне не следует ;-) в любом случае, я могу заставить отдельные виджеты работать нормально как для iOS, так и android, используя пакет Platform или мне придется искать способы получить то, что я хочу делать, работая каждый раз специально для iOS (например, ToggleButtons)?

Спасибо

Les

...