generated from dellevin/template
32 lines
952 B
Dart
32 lines
952 B
Dart
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);
|
||
}
|