适配平板

This commit is contained in:
DelLevin-Home
2026-06-30 21:51:38 +08:00
parent 18cda23f2a
commit 1192f8f7e0
19 changed files with 699 additions and 377 deletions

31
lib/utils/responsive.dart Normal file
View File

@@ -0,0 +1,31 @@
import 'package:flutter/widgets.dart';
/// 响应式布局断点工具
class Breakpoint {
/// ≥600dp: 平板布局(常驻侧边栏 + NavigationRail
static const double tablet = 600.0;
/// ≥900dp: 宽屏内容区(列表-详情并排显示)
static const double wideContent = 900.0;
static bool isTablet(BuildContext context) =>
MediaQuery.sizeOf(context).width >= tablet;
static bool isPhone(BuildContext context) =>
MediaQuery.sizeOf(context).width < tablet;
/// 是否使用宽屏内容布局(列表+详情并排)
static bool isWideContent(BuildContext context) =>
MediaQuery.sizeOf(context).width >= wideContent;
}
/// 根据可用宽度动态计算网格列数
int responsiveCrossAxisCount(
double availableWidth, {
double minItemWidth = 160,
int minCount = 2,
int maxCount = 6,
}) {
final count = (availableWidth / minItemWidth).floor();
return count.clamp(minCount, maxCount);
}