- TextFormField : я не могу найти TextFormField в дизайне Купертино для использования с формами ...
- Validator: Как проверить CupertinoTextField , поскольку нет метода проверки
В Купертино нет TextField
с методами проверки и формы.В разработке для iOS вы должны написать свой собственный код проверки формы и вызвать их соответствующим образом.Это не исключение и во Флаттере.Один из типичных подходов - создать внутренний класс _FormData
для хранения TextEditingController
для каждого CupertinoTextField
, а затем проверить их в вашем onPressed
обратном вызове.
App Drawer: прямо сейчас у меня есть App Drawer.Когда я перехожу к дизайну пользовательского интерфейса Cuprtino как для IOS, так и для Android, я должен оставить App Drawer?
Опять же, виджет Drawer
существует только в Material design.Все ящики, которые вы можете увидеть в различных приложениях для iOS на рынке, являются заказными UIView
, изготовленными сторонними поставщиками. Руководство по интерфейсу Apple Apple четко указывало, что:
Избегайте использования выдвижных ящиков. Ящики редко используются в современных приложениях, и их использование не рекомендуется.Панели, всплывающие окна, боковые панели и разделенные виды предпочтительны для отображения дополнительного содержимого окна.
Возможно, вы захотите использовать CupertinoPageScaffold
или CupertinoTabScaffold
, в зависимости от требований вашего дизайна.
Как указать ширину купертино-кнопки?
Вы можете обернуть CupertinoButton
с помощью Container
, SizedBox
или FractionallySizedBox
.
Container(
width: 300 // or whatever width you want,
child: CupertinoButton(
child: Text('Submit'),
color: Theme.of(context).primaryColor,
onPressed: () {
// Write your callback here
},
),
)
или
SizedBox(
width: 300 // or whatever you want,
child: CupertinoButton(
child: Text('Submit'),
color: Theme.of(context).primaryColor,
onPressed: () {
// Write your callback here
},
),
)
или
FractionallySizedBox(
widthFactor: 0.5 // or whatever you want,
child: CupertinoButton(
child: Text('Submit'),
color: Theme.of(context).primaryColor,
onPressed: () {
// Write your callback here
},
),
)
В общем, Container
должно сработать.Если вы поместите свой CupertinoButton
в виджет Flex
(например, ListView
, Column
), вы можете использовать SizedBox
или FractionallySizedBox
.Вы можете обратиться к документации API SizedBox
и FractionallySizedBox
ListTitle вызывает исключение, когда я пытаюсь перейти на Cuprtio.Исключение составляет «Определенный виджет, который не смог найти предка материала: ListTitle»
Как говорится в журнале ошибок:
В дизайне материалов большинствоВиджеты концептуально «напечатаны» на листе материала.В библиотеке материалов Flutter этот материал представлен виджетом материалов.Например, виджет «Материал» отображает всплески чернил.Из-за этого многие виджеты библиотеки материалов требуют наличия виджета «Материал» в дереве над ними .Чтобы ввести виджет «Материал», вы можете либо напрямую включить один , либо использовать виджет, который содержит сам материал , например Card
, Dialog
, Drawer
илиScaffold
.
Полагаю, вы пытаетесь использовать ListTile
(это виджет Материал) в CupertinoPageScaffold
или CupertinoTabView
, которые, очевидно, являются виджетами Купертино.Вот как я это решил:
Material(
type: MaterialType.transparency,
child: ListTile(
...
)
)