mirror of
https://gitlab.com/veilid/veilidchat.git
synced 2025-08-10 23:20:19 -04:00
53 lines
1.8 KiB
Dart
53 lines
1.8 KiB
Dart
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
final isAndroid = !kIsWeb && defaultTargetPlatform == TargetPlatform.android;
|
|
final isiOS = !kIsWeb && defaultTargetPlatform == TargetPlatform.iOS;
|
|
final isMac = !kIsWeb && defaultTargetPlatform == TargetPlatform.macOS;
|
|
final isWindows = !kIsWeb && defaultTargetPlatform == TargetPlatform.windows;
|
|
final isLinux = !kIsWeb && defaultTargetPlatform == TargetPlatform.linux;
|
|
|
|
final isMobile = !kIsWeb &&
|
|
(defaultTargetPlatform == TargetPlatform.iOS ||
|
|
defaultTargetPlatform == TargetPlatform.android);
|
|
final isDesktop = !kIsWeb &&
|
|
!(defaultTargetPlatform == TargetPlatform.iOS ||
|
|
defaultTargetPlatform == TargetPlatform.android);
|
|
|
|
const isWeb = kIsWeb;
|
|
final isWebMobile = kIsWeb &&
|
|
(defaultTargetPlatform == TargetPlatform.iOS ||
|
|
defaultTargetPlatform == TargetPlatform.android);
|
|
final isWebDesktop = kIsWeb &&
|
|
!(defaultTargetPlatform == TargetPlatform.iOS ||
|
|
defaultTargetPlatform == TargetPlatform.android);
|
|
|
|
final isAnyMobile = isMobile || isWebMobile;
|
|
|
|
const kMobileWidthCutoff = 500.0;
|
|
|
|
bool isMobileWidth(BuildContext context) =>
|
|
MediaQuery.of(context).size.width < kMobileWidthCutoff;
|
|
|
|
bool isMobileSize(BuildContext context) =>
|
|
MediaQuery.of(context).size.width < kMobileWidthCutoff ||
|
|
MediaQuery.of(context).size.height < kMobileWidthCutoff;
|
|
|
|
bool responsiveVisibility({
|
|
required BuildContext context,
|
|
bool phone = true,
|
|
bool tablet = true,
|
|
bool tabletLandscape = true,
|
|
bool desktop = true,
|
|
}) {
|
|
final width = MediaQuery.of(context).size.width;
|
|
if (width < kMobileWidthCutoff) {
|
|
return phone;
|
|
} else if (width < 767) {
|
|
return tablet;
|
|
} else if (width < 991) {
|
|
return tabletLandscape;
|
|
} else {
|
|
return desktop;
|
|
}
|
|
}
|