SuperAPI AI 工具集

adaptive-layout

通用与其它

查看项目

更新于 10-15 23:57

技能介绍

用途:让 Flutter 界面按可用空间自适应,而不是按设备或平台判断。手机外屏、可调整大小的桌面窗口、分屏平板都会让 Platform.isX 判断失效,但约束始终真实,因此应基于宽度分支。

主要能力:以 Material 3 窗口尺寸类作为统一断点词汇(compact <600、medium 600–840、expanded 840–1200、large 1200–1600、extra-large ≥1600 逻辑像素),用一个共享枚举保证各屏断点一致;按宽度选择导航形态(NavigationBar→NavigationRail→NavigationDrawer),在 shell 中统一决定;列表-详情在 compact 折叠为单栏导航、在 expanded 并排显示并共享选中状态;用最大宽度约束正文可读性,顶层区域用 Flexible/Expanded/FractionallySizedBox 而非固定像素;用 SafeArea 处理刘海与系统栏,用 MediaQuery.viewInsetsOf 处理键盘;用 displayFeaturesOf 识别折叠屏铰链。

使用方式:局部盒子约束用 LayoutBuilder,整窗尺寸用 MediaQuery.sizeOf(context);读取 MediaQuery 时用 sizeOf/paddingOf/viewInsetsOf/viewPaddingOf 而非 .of,以减少重建范围。提交 PR 前运行 scripts/check_adaptive.sh。

限制与要求:不得用 Platform.is*/kIsWeb 选择布局;不得锁定方向;不得假设固定单元格高度;需用金标矩阵覆盖 compact/medium/expanded 及最大字号、LTR/RTL。具体示例代码与脚本内容以资料为准,未提供的细节暂未提供。