- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在做一个几乎完成了 80% 的项目。我所有的项目都是在 Material 设计上完成的。现在我正在尝试为 Android 和 IOS 移动 Cupertino UI 主题。
当我尝试从 Material design 迁移到 Cupertino UI 时,我遇到了很多问题,尤其是在以下领域..
- TextFormField: I am not able to find TextFormField in Cupertino design to use with forms...
- Validator: How to valide CupertinoTextField as there is no validator method
- App Drawer: Right now I have App Drawer. As I am moving to Cuprtino UI design for both IOS and Android should I drop the App Drawer?
- How can I give the width of the CupertinoButton ?
- ListTitle is throwing exception when I am trying to migrate to Cuprtio. The exception is "The specific widget that could not find a Material ancestor was: ListTitle"
另外,如何在 CupertinoPageScaffold 页面内混合非 Cuprtino 小部件?
感谢您的宝贵时间
最佳答案
- TextFormField: I am not able to find TextFormField in Cupertino design to use with forms...
- Validator: How to valide CupertinoTextField as there is no validator method
没有TextField
在 Cupertino 使用验证和表单方法。在 iOS 开发中,您将编写自己的表单验证代码并相应地调用它们。在 Flutter 中也不异常(exception)。一种典型的方法是创建一个内部 _FormData
类来存储您的TextEditingController
对于每个 CupertinoTextField
,然后在您的 CupertinoButton
中验证它们的onPressed
回调。
- App Drawer: Right now I have App Drawer. As I am moving to Cuprtino UI design for both IOS and Android should I drop the App Drawer?
再次,Drawer
小部件仅存在于 Material Design 中。您可能在市场上的各种 iOS 应用程序中看到的所有抽屉都是定制的 UIView
由第 3 方提供商制作。 Apple Human Interface Guidelines明确指出:
Avoid using drawers. Drawers are seldom used in modern apps and their use is discouraged. Panels, popovers, sidebars, and split views are preferred for displaying supplementary window content.
您可能需要考虑使用 CupertinoPageScaffold
或 CupertinoTabScaffold
,具体取决于您的设计要求。
- How can I give the width of the 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
或 FractionallySizedBox
.您可以引用 SizedBox
的 API 文档和 FractionallySizedBox
- ListTitle is throwing exception when I am trying to migrate to Cuprtio. The exception is "The specific widget that could not find a Material ancestor was: ListTitle"
正如错误日志所说:
In material design, most widgets are conceptually "printed" on a sheet of material. In Flutter's material library, that material is represented by the Material Widget. It is the Material widget that renders ink splashes, for instance. Because of this, many material library widgets require that there be a Material widget in the tree above them. To introduce a Material widget, you can either directly include one, or use a widget that contains Material itself, such as a
Card
,Dialog
,Drawer
, orScaffold
.
我猜你正在尝试使用 ListTile
(这是一个 Material 小部件)在 CupertinoPageScaffold
或 CupertinoTabView
,这显然是 Cupertino 小部件。我就是这样解决的:
Material(
type: MaterialType.transparency,
child: ListTile(
...
)
)
关于Flutter Material 到 Cupertino 的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54966029/
@override Widget build(BuildContext context) { return CupertinoPageScaffold(
我被困在 https://codelabs.developers.google.com/codelabs/flutter-cupertino/#5 教程的第 6 步。 .我无法理解它在提示什么。 如果
我有一个列出一些结果的“表格列表”小部件,我想从 2 个不同的来源重用这个小部件。这是方法: "View1"-> 来源 1 "View2"-> 来源 2 "View3"-> 包含列表的表格 TL +-
如果用户按下我的登录按钮后该字段为空,我会尝试在 Cupertino TextField 下方显示错误文本。似乎没有明确的方法可以在任何 CupertinoTextfield 参数中像在 androi
我在 Flutter 中使用 Cupertino 设计并使用 CupertinoTabBar .当来自不同的屏幕时,我想访问不同的选项卡项目。 例如,我有 2 个项目:Home 和 Profile。
我在使用 Cupertino 小部件时遇到了这个恼人的问题。当我创建一个 super 简单的应用程序设置(脚手架、导航栏、一个文本项)时,文本似乎开始于视口(viewport)之外很远的地方。 例子如
我正在尝试使用 endDrawer 添加 CupertinoNavigationBar,我尝试在尾部添加 Gesture Detector,但没有用,显示如下: The following asser
有人知道如何在 Flutter 中制作仅带有图标按钮且没有标题的 Cupertino Bottom 标签栏 View 吗?就像 iOS 上的 Facebook 和 Twitter 底部栏应用程序一样,
我正在尝试为 CupertinoSliverAppBar 添加渐变背景在 Flutter 应用程序中,但我似乎无法弄清楚该怎么做。 SliverAppBar有一个 flexibleSpace接受渐变但
我知道要使用它们,您必须导入 'package:flutter/cupertino.dart';并像这样使用它 Icon(CupertinoIcons.info); 但是很难选择需要的图标。 亲爱的
flutter 中的 Cupertino Picker 占用 100% 宽度。 我们如何给它自定义样式?高度、宽度、边框? 我试着把它放在一个宽度和所有的容器里,没有用。相反,当我给容器一个颜色时,有
我正在做一个几乎完成了 80% 的项目。我所有的项目都是在 Material 设计上完成的。现在我正在尝试为 Android 和 IOS 移动 Cupertino UI 主题。 当我尝试从 Mater
我有一个 Flutter 应用程序,它使用 Android 的 Material 主题和 iOS 的 Cupertino 主题。但我使用 Card小部件,这是一个 Material 小部件,在两个主题
我正在尝试检查用户的设备操作系统并向 iOS 用户显示库比蒂诺日期选择器,并向 Android 用户显示 Material 日期选择器。下面是我的代码 Future _selectDate(Build
我正在编写小部件测试 Cupertino Picker 以获取用户选择的不同值。我找不到任何好的教程。我关注了这个 https://github.com/flutter/flutter/blob/ma
如何创建(这是一个很好的做法)一个 Flutter 应用程序,它在 iOS 上显示 Cupertino UI 小部件,在 Android 上显示具有相同功能的 Material UI 小部件? 最佳答
我正在尝试在 Cupertino 应用程序中使用 ChoiceChip 小部件。 我找到了这个解决方案https://github.com/flutter/flutter/issues/21872#i
是否可以在 Material 应用程序中使用 flutter/cupertino.dart 中的一些小部件? (使用脚手架) 我想用 cupertino 风格而不是 Material 渲染 Switc
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
我遇到了一个问题,我需要使用标签导航。当前的 Material 脚手架只有 1 个堆栈。因此,如果我需要深入几个级别(子页面),那么我将失去选项卡上下文。 Cupertino 脚手架让我可以深入多个层
我是一名优秀的程序员,十分优秀!