基础常识 1.1 主流屏幕尺寸 标识 屏幕尺寸 hdpi 480 * 800 xhdpi 720 * 1280 xxhdpi 1080 * 1920 1.2 图标尺寸 标识 启动图标尺寸 菜单图标尺寸...2.2 材质与空间 材质 编辑 Material Design 中,最重要的信息载体就是魔法纸片。纸片层叠、合并、分离,拥有现实中的厚度、惯性和反馈,同时拥有液体的一些特性,能够自由伸展变形。...以下是一些常见的尺寸与距离: 顶部状态栏高度:24dp Appbar最小高度:56dp 底部导航栏高度:48dp 悬浮按钮尺寸:56x56dp/40x40dp 用户头像尺寸:64x64dp/40x40dp...次要内容可以是一个动作按钮或者文本。 编辑 为瓦片内容提供一个默认图片。 网格只能垂直滚动。单个瓦片不支持滑动手势,也不鼓励使用拖放操作。 网格中的单元格间距是2dp或8dp。...在同一个列表中,主、副操作区的内容与位置要保持一致。 编辑 在同一个列表中,滑动手势操作保持一致。
条件元素容器组件允许开发者根据特定条件动态展示或隐藏内容,为用户提供更加个性化的体验。而共享元素容器组件则通过在不同页面或状态间共享元素,创造出流畅的过渡效果,使得用户在浏览过程中感受到更自然的连接。...我们可以使用 match-media 组件来根据屏幕尺寸和设备方向条件渲染不同的内容。...-- 当设备的屏幕宽度在 300px 到 400px 时渲染 -->400"> 页面一的屏幕宽度在 300px 到 400px 时,渲染页面一。当设备的屏幕宽度大于或等于 400px 且处于横屏模式时,渲染页面二。...当设备的屏幕宽度大于或等于 400px 且处于竖屏模式时,渲染页面三。
Flutter组件的分类 文字类型 容器类型 辅助提示类型 列表类型 系统主题风格类型 交互类型 文字类型 用于描述文字, 如Text组件,一个普通的文本, 属性有字体的颜色、大小、下划线、删除线...系统主题有关的组件 MaterialApp和AppBar详解 Main.dart中有一个MaterialApp组件, 通过这个组件就可以实现很多Material风格的东西: theme:主题属性...//悬浮按钮的位置 floatingActionButtonLocation: FloatingActionButtonLocation.endFloat, //悬浮按钮组件...disabledElevation: 10.0, // 按钮尺寸:默认是56逻辑像素 如果为true就是48逻辑像素 mini: false, //配置圆角弧度...50.0, // // 按钮不可用时的阴影大小 // disabledElevation: 10.0, // // 按钮尺寸:默认是56逻辑像素 如果为true就是48逻辑像素
介绍 在 Flutter 中,NavigationRail 是一个垂直的导航栏组件,用于在应用程序中提供导航功能。它通常用于更大屏幕空间的设备,如平板电脑和桌面应用程序。...响应式设计: NavigationRail 支持响应式设计,可以适应不同尺寸和方向的屏幕。这使得它成为构建适用于多种设备和屏幕尺寸的应用程序的理想选择。...在本例中,我们设置为 NavigationRailLabelType.all,表示显示所有标签,包括未选中的标签。...NavigationRail 作为一种用于导航的重要组件,需要在各种屏幕尺寸上进行适应。...以下是在不同的屏幕尺寸上响应式地使用 NavigationRail 的一些最佳实践: 6.1 适应平板电脑、桌面和移动设备的最佳实践 使用媒体查询: 使用 MediaQuery 来检测当前设备的屏幕尺寸和方向
// 存放字体 images // 存放图片 在 pubspec.yaml 文件设定 images 的路径内容: assets: - assets/images/ 在 pubspec.yaml...weight: 600 编写欢迎页面 添加屏幕适配的包。...class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { //填入设计稿中设备的屏幕尺寸...ios 目录下,在终端执行 `pod install` 组件 appBar 拆分过程的报错:The argument type 'Widget' can't be assigned to the parameter...解决方案: 因为我们定义了 appBar 组件是 `Widget`,我们应该定义其为 `PreferredSizeWidget`。
,那么在480x800分辨率手机上设置应为240px;在320x480的手机上应设置为160px,二者设置就不同了;如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度。...屏幕适配问题的本质 使得“布局”、“布局组件”、“图片资源”、“用户界面流程”匹配不同的屏幕尺寸 使得布局、布局组件自适应屏幕尺寸; 根据屏幕的配置来加载相应的UI布局、用户界面流程 使得“图片资源...的图片类型 假设需要匹配不同屏幕大小,你的图片资源也必须自动适应各种屏幕尺寸 使用场景:一个按钮的背景图片必须能够随着按钮大小的改变而改变。...,那么在480x800分辨率手机上设置应为240px;在320x480的手机上应设置为160px,二者设置就不同了;如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度。...| 480 |1dp=3px|12| 在Android中,规定以160dpi(即屏幕分辨率为320x480)为基准:1dp=1px 独立比例像素 含义:scale-independent pixel,
px作为计量单位,那么在480x800分辨率手机上设置应为240px;在320x480的手机上应设置为160px,二者设置就不同了;如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度...在Android中,规定以160dpi(即屏幕分辨率为320x480)为基准:1dp=1px 独立比例像素 含义:scale-independent pixel,叫sp或sip 单位:sp Android...---- 屏幕适配问题的本质 使得“布局”、“布局组件”、“图片资源”、“用户界面流程”匹配不同的屏幕尺寸 使得布局、布局组件自适应屏幕尺寸; 根据屏幕的配置来加载相应的UI布局、用户界面流程...“布局控件”匹配 本质:使得布局组件在不同屏幕密度上显示相同的像素效果 做法1:使用密度无关像素 由于各种屏幕的像素密度都有所不同,因此相同数量的像素在不同设备上的实际大小也有所差异,这样使用像素(px...px作为计量单位,那么在480x800分辨率手机上设置应为240px;在320x480的手机上应设置为160px,二者设置就不同了;如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度
这篇引导退一步来解释Flutter进行布局的方式,以及展示如何在屏幕上放置一个单独的组件。在学习完如何横向或竖向展示组件之后,我们会再看到些常用的布局组件。...在Expanded组件中的Column组件使得当前列(column并非组件)可以覆盖真个Title section....将整个标题行(Title Section图解中的Row with 3 children)放置在一个Container组件中,并且设置Container组件32px的内边距。...Tip: 为体验更快开发过程,尝试使用Flutter的热加载功能。热加载使得在修改代码同时快速地在查看到修改后的效果,而不用重运行app。...,最高效的办法就是创建一个嵌套函数,例如就定义为buildButtonColumn(),这个方法中创建包含一个图标和一个文本得组件,并且返回Column对象。
在MaterialApp的Home属性中设置指定宽高的Container 前面的例子都是在Scaffold中设置的Container,那么如果直接在MaterialApp中设置Container...在上面的代码中,Container被设置为固定宽高,如果在Scaffold中设置的Container,那么Container的宽高会被限定为具体的数值,但运行上面的代码,可以发现,在MaterialApp...首先,Container自身的布局约束为:最大尺寸为屏幕尺寸,当前尺寸为屏幕尺寸。...很好理解,因为MaterialApp和Scaffold本身的约束设置就不一样,MaterialApp的Home Widget会被强制设置为屏幕的宽高,并作为一个固定尺寸。...因此,在最后一个例子中,借助一个Align的组件,就可以完成Container的固定尺寸效果,原因是,此时Container已经不是MaterialApp的Child了,而Align组件本身就是会设置为父布局的最大尺寸
它是为实现快速开发Web应用程序而设计的一套前端工具包。 它支持响应式布局,并且在V3版本之后坚持移动设备优先。...负值的 margin就是下面的示例为什么是向外突出的原因。在栅格列中的内容排成一行。 栅格系统中的列是通过指定1到12的值来表示其跨越的范围。...因此,在元素上应用任何 .col-md-* 栅格类适用于与屏幕宽度大于或等于分界点大小的设备 , 并且针对小屏幕设备覆盖栅格类。...;width: 400px"> 参数详情: /* 超小屏幕(手机,小于 768px) */ /* 没有任何媒体查询相关的代码,因为这在 Bootstrap 中是默认的...) { ... } 我们偶尔也会在媒体查询代码中包含 max-width 从而将 CSS 的影响限制在更小范围的屏幕大小之内。
Flutter中的SingleChildScrollView类似于Android中的ScrollView,它只能接收一个子组件。...“头”还是“尾”,false在“头”,true在“尾” this.padding, //内边距 bool primary, //是否使用widget树中默认的`PrimaryScrollController...}) SingleChildScrollView常用属性值 含义 scrollDirection 滚动方向,默认是垂直方向 reverse 决定可滚动组件的初始滚动位置是在“头”还是“尾”,false在...“头”,true在“尾”,默认false padding 内边距 primary 是否使用widget树中默认的PrimaryScrollController,当scrollDirection值为Axis.vertical...需要注意的是,通常SingleChildScrollView只应在期望的内容不会超过屏幕太多时使用,这是因为SingleChildScrollView不支持基于Sliver的延迟实例化模型,所以如果预计视口可能包含超出屏幕尺寸太多的内容时
switch是两个状态的UI组件,用于在ON(选中)或OFF(未选中)状态之间切换。通常,它是带有拇指滑块的按钮,用户可以在其中来回拖拉以选择其他选项,例如“开”或“关”。...假设此属性的价值回报为true,则此开关为ON,为OFF则为false。当此属性无效时,开关小部件会失效。 该演示视频展示了如何在颤动中创建自定义滚动开关。...它显示了在用户按下按钮后进行的切换交互,该开关将滚动到具有动画效果的另一侧,并且在滚动该开关时将更改图标和文本。...在小部件内,我们将添加一个列小部件。在此小部件中,我们将添加mainAxisAlignment为center。在内部,我们将添加带有样式的文本。...我们将添加animationDuration手段来延迟动画的开始并添加onChanged表示用户打开或关闭开关的时间。当我们运行应用程序时,我们应该获得屏幕的输出,如屏幕下方的截图所示。
为简便起见,Android 将所有实际屏幕尺寸分组为四种通用尺寸:小、 正常、大和超大。 1.3 dpi 屏幕物理区域中的像素量;通常称为 dpi(Dots Per Inch 每英寸 点数)。...所以看标题就知道,他更像是在求一个密度。那我们既然知道了手机屏幕对角线的尺寸,我们只要知道了手机对角线上的px数量,除一下就知道了每英寸上的像素点数了。...所以我们只需要通过勾股定理获取对角线上的像素值,再除以屏幕尺寸值就可以了。 ? 为简便起见,Android 将所有屏幕密度分组为六种通用密度: 低、中、高、超高、超超高和超超超高。...假设我们多了一个400X400 的设备,因为它的屏幕尺寸也同时变大了很多,所以最终的density和300X300一样,那这时候我们写了50haha,也就代表了150px,这时候明显在400X400上面并没有显示为一半...,甚至当这个400X400的设置的屏幕尺寸超级大,反而可能算下来的density与100X100的一样,那这时候50haha可能就只有50px,则显示差距就更大了。
标题 选定的日期范围 切换到输入模式 月和年标签 当前时间 开始时间 选中时间范围 结束时间 国际化 国际化都是一个套路,下面以 showDatePicker 为例: 在 pubspec.yaml 中引入...国际化 在 pubspec.yaml 中引入: dependencies: flutter_localizations: sdk: flutter 在顶级组件 MaterialApp 添加支持...国际化 在 pubspec.yaml 中引入: dependencies: flutter_localizations: sdk: flutter 在顶级组件 MaterialApp 添加支持...,默认为true,如果设为true,表示子组件是无限制约束,这对子组件的尺寸比 InteractiveViewer 大时非常有用,比如子组件为滚动系列组件。...如下的案例,子组件为 Table,Table 尺寸大于屏幕,必须将constrained设置为 false 以便将其绘制为完整尺寸。超出的屏幕尺寸可以平移到视图中。
例如:Material 组件中的 AppBar 的右侧菜单中,我们使用 SizedBox 指定 loading 按钮的大小,代码如下: AppBar( title: Text("Box"), actions...,而并不是在 layout 阶段,所以无论对 子组件做何种变化,其占用的空间的大小和在屏幕上的位置都是不变的,因为这些都是在布局阶段就确定的,例如: Widget getTest() { return...Material 风格的导航栏,通过他可以设置标题,导航栏菜单,导航底部tab等 AppBar({ Key key, this.leading, //导航栏最左侧Widget,常见为抽屉菜单按钮或返回按钮...//其它属性见源码注释 }) 复制代码 如果给 Scaffold 添加了抽屉菜单,默认情况下, Scaffold 会自动将 AppBar 的 leading 设置为菜单按钮(如上面截图所示),点击它可以打开抽屉菜单...打开抽屉的方法在 ScaffoldState 中,通过 Scaffold.of() 可以获取腹肌最近的 Scaffold 组件的 State 对象 ToolBar 下面,在 AppBar 中通过 Bottom
1、由于轮播图片超宽造成的影响 - 美工为了在不同屏幕下更好地展示将图片两边做的非常宽,但是我们大多数情况的页面宽度都无法满足这样的图片宽度 - 而且Bootstrap的样式中默认将图片的max-width... + 如 background-size: 100px 100px,将背景图固定到多大尺寸 - percentage + 如 background-size: 90% 90%,以百分比的形式设置背景大小...*400 * 因为背景图的较大边为200,将200放大到目标容器400的高度,放大了2倍,最终结果200\*400 4、图片响应式 (1)目的 + 各种终端都需要正常显示图片...> .item > img { 12 width: 100%; 13 } 四、栅格系统 网格系统 - 该板块当屏幕为中等尺寸时分为3列,较小屏幕是分为2列 - 所以使用网格系统划分 支付交易保障 银联支付全称保证支付安全 六、响应式辅助类型 - 整个板块在超小屏幕下是隐藏起来的
对父组件限制的“去除”并非是真正的去除:上面例子中虽然红色区域大小是90×20,但上方仍然有80的空白空间。...剪裁Widget 作用 ClipOval 子组件为正方形时剪裁为内贴圆形,为矩形时,剪裁为内贴椭圆 ClipRRect 将子组件剪裁为圆角矩形 ClipRect 剪裁子组件到实际占用的矩形大小(溢出部分剪裁...: 组件名称 解释 AppBar 一个导航栏骨架 MyDrawer 抽屉菜单 BottomNavigationBar 底部导航栏 FloatingActionButton 漂浮按钮 AppBar AppBar...下面我们看看AppBar的定义: AppBar({ Key key, this.leading, //导航栏最左侧Widget,常见为抽屉菜单按钮或返回按钮。...//其它属性见源码注释 }) 如果给Scaffold添加了抽屉菜单,默认情况下Scaffold会自动将AppBar的leading设置为菜单按钮(如上面截图所示),点击它便可打开抽屉菜单。
在第一个阶段中,framework 以递归地方式沿着渲染树 把BoxConstraints传递给子组件。它为父组件提供了一种方式来调节/增强子组件的尺寸,并根据需要更新这些限制。...这意味着父组件有责任定义/限制/约束子组件的尺寸,并相对于其坐标系进行定位。换句话说,小部件可以选择其大小,但是它必须始终遵守从其父级收到的约束。此外,小部件不知道其在屏幕上的位置,但其父级知道。...此函数检查屏幕当前大小(在我们的示例中为392:759),然后创建一个BoxConstraints对象,其中包含将发送到我们的第一个小部件(MyApp)的约束。...请注意,最大高度为759(屏幕最大高度)减去80(AppBar选择的高度)。 Center转到其子组件“Text”,转发相同的约束。...Main获取此“最终”窗口小部件,并将其最终绑定到屏幕中。 RenderBox树最终绑定在屏幕上。我们有一个正在运行的应用程序。 有趣的事情要记住 小部件不知道其在屏幕上的位置;它的父组件才知道。
其实和原来的 CSS 没差特别多,不过先说一个挺重要的点,就是微信小程序官方提供的一种,解决尺寸问题的方案 rpx 例如设计师给你的设计稿是px为单位的,但是如果你直接使用这样固定的写法,就会导致在不同的机型上...规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。...注意: 在较小的屏幕上不可避免的会有一些毛刺,请在开发时尽量避免这种情况 知道了这些,接着看上面的问题,首先,1px=rpx*(750/设备屏幕宽度),因为原型图我们以iphone6为标准,所以公式就是...1px=rpx*(750/375),所以1px=2rpx,这也对应了上面的表格,所以我们只需要将原来固定的 200px 修改一下,成为 400rpx,这样就会发现方框就会根据不同屏幕的尺寸来变化了 (3...在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。
19. checkerboardRasterCacheImages当为true时,打开光栅缓存图像的棋盘格20. checkerboardOffscreenLayers当为true时,打开呈现到屏幕位图的层的棋盘格...Text:文本组件Icon:图标组件CloseButton:关闭按钮的组件BackButton:返回按钮的组件Chip:材料设计中非常有趣的一个组件Divider:分割线的组件Card:卡片状的容器组件...AlertDialog:一个弹框的组件flutter问题:Flutter通过将新的代码注入到正在运行的DartVM中,来实现Hot Reload这种神奇的效果,在DartVM将程序中的类结构更新完成后,...默认值为 true。AppBar 有以下常用属性:leading → Widget - 在标题前面显示的一个控件,在首页通常显示应用的 logo;在其他界面通常显示为返回按钮。...iconTheme → IconThemeData - Appbar 上图标的颜色、透明度、和尺寸信息。默认值为 ThemeData.primaryIconTheme。
领取专属 10元无门槛券
手把手带您无忧上云