37 lines
1.1 KiB
Dart
37 lines
1.1 KiB
Dart
import 'dart:io';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
|
|
class AppBreakpoints {
|
|
static const mobile = 700.0;
|
|
static const desktop = 1100.0;
|
|
}
|
|
|
|
class Responsive {
|
|
static bool isMobile(BuildContext context) {
|
|
if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) {
|
|
return MediaQuery.sizeOf(context).shortestSide < 600;
|
|
}
|
|
return MediaQuery.sizeOf(context).width < AppBreakpoints.mobile;
|
|
}
|
|
|
|
static bool isDesktop(BuildContext context) {
|
|
if (!kIsWeb && (Platform.isAndroid || Platform.isIOS)) {
|
|
return MediaQuery.sizeOf(context).shortestSide >= 600;
|
|
}
|
|
return MediaQuery.sizeOf(context).width >= AppBreakpoints.desktop;
|
|
}
|
|
|
|
static int columnsFor(
|
|
BuildContext context, {
|
|
required int mobileColumns,
|
|
required int desktopColumns,
|
|
}) {
|
|
final width = MediaQuery.sizeOf(context).width;
|
|
if (width < 380) return 1;
|
|
if (width < AppBreakpoints.mobile) return mobileColumns.clamp(1, 2);
|
|
if (width < AppBreakpoints.desktop) return 3;
|
|
return desktopColumns.clamp(3, 8);
|
|
}
|
|
}
|