- TextFormField:我无法在 Cupertino 设计中找到与表单一起使用的TextFormField ...
- 验证器:如何验证CupertinoTextField,因为没有验证器方法
Cupertino 中没有TextField
验证和表单方法。在 iOS 开发中,您将编写自己的表单验证代码并相应地调用它们。在 Flutter 中也不例外。一种典型的方法是创建一个内部_FormData
类来存储你的TextEditingController
for each CupertinoTextField
,然后在你CupertinoButton
的onPressed
回调中验证它们。
- App Drawer:现在我有 App Drawer。当我转向适用于 IOS 和 Android 的 Cuprtino UI 设计时,我应该放弃 App Drawer 吗?
同样,Drawer
小部件仅存在于 Material design 中。您可能在市场上的各种 iOS 应用程序中看到的所有抽屉都是UIView
由第三方提供商定制的。Apple 人机界面指南明确指出:
避免使用抽屉。现代应用程序中很少使用抽屉,因此不鼓励使用。面板、弹出框、侧边栏和拆分视图是显示补充窗口内容的首选。
您可能需要考虑使用CupertinoPageScaffold
or CupertinoTabScaffold
,具体取决于您的设计要求。
- 如何给出 CupertinoButton 的宽度?
你可以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
or FractionallySizedBox
。您可以参考 API 文档SizedBox
和FractionallySizedBox
- 当我尝试迁移到 Cuprtio 时,ListTitle 抛出异常。例外是“找不到 Material 祖先的特定小部件是:ListTitle”
正如错误日志所说:
在材料设计中,大多数小部件在概念上都“打印”在一张材料上。在 Flutter 的材质库中,该材质由 Material Widget 表示。例如,渲染墨水飞溅的是 Material 小部件。正因为如此,许多材质库小部件要求在它们上方的树中有一个 Material 小部件。要引入 Material 小部件,您可以直接包含一个,也可以使用包含 Material 本身的小部件,例如Card
、Dialog
、Drawer
或Scaffold
。
我猜您正在尝试在 a or中使用ListTile
(这是一个 Material 小部件),这显然是 Cupertino 小部件。这就是我解决它的方法:CupertinoPageScaffold
CupertinoTabView
Material(
type: MaterialType.transparency,
child: ListTile(
...
)
)