ios - 我想将下面的代码转换成 Cupertino,IOS 风格。但我不能使用 IOS 风格的抽屉菜单。为什么?我该如何使用?
问题描述
我想做android和IOS风格。
我想将下面的代码转换成 Cupertino,IOS 风格。
但我不能使用 IOS 风格的抽屉菜单。为什么?我该如何使用?
return Scaffold(
key: _scaffoldKey,
drawer: Drawer(),
appBar: AppBar(
leading: IconButton(
onPressed: () {
Navigator.pop(context);
},
icon: Icon(
Icons.arrow_back_ios,
color: MyColors.blue,
),
),
centerTitle: true,
title: Text('Test', style: MyTextStyles.appBarTitle(deviceType) ),
actions: <Widget>[
Builder(
builder: (BuildContext context) => PlatformIconButton(
onPressed: () {
Scaffold.of(context).openDrawer();
},
icon: Icon(
Icons.menu,
)))])
body: .........
解决方案
该Drawer
小部件是 Material-exclusive 小部件,您不能直接在 iOS 上使用它。
您可以通过复制小部件的构建构造来为 iOS 构建自己的“类似抽屉”的小Drawer
部件,但我不建议这样做,因为抽屉没有 iOS 的“外观和感觉”。作为一个 iOS 用户,我知道一些非常有影响力的应用程序,比如 Twitter,有一些看起来像抽屉的东西,但我认为这不是原生 iOS 应用程序处理这种导航的方式。
相反,您可以做的是Drawer
为 Android 提供一个小部件,为 iOS 提供一个底部标签栏,这是一个在 iOS 风格的应用程序中更为常见的组件。您可以使用Platform
该类来检查您的代码是在 Android 还是 iOS 上执行,并据此选择正确的小部件。
这是您可能会发现有用的构建逻辑的一个示例。很抱歉我不能直接粘贴代码,我从我制作的演示文稿中截取了这张截图,我不记得我把这个项目的代码放在哪里了,但我希望你觉得它有用。
推荐阅读
- checkbox - 为什么我的控制复选框没有被选中?
- java - 我的通用超类方法返回子类元素列表我如何在后代类中覆盖此方法以返回子类列表
- vaadin - 如何通过“camunda”或“flowable” bpm 来控制 UI(例如 Vaadin)?
- azure-functions - Azure函数:更新配置值抛出异常(未注册配置源。请在设置值之前先注册一个。)
- omnet++ - “ 错误:“在此上下文中不允许使用参数'map.net.xml'”,当我想在 sumo 中创建“.poly.xml”文件时”
- java - 使用 java.nio 时抛出 IllegalArgumentException
- r - 在 R 中重试 S3 读/写操作
- python - 我不知道我有什么版本的 Python,以及我的第一个网站的编码问题
- python - 如何从 Python 中的 Postsql 中提取时间成本解释
- java - 如何创建可变的 firebase 数据库名称?