mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-04 07:45:30 +00:00
51 lines
1.3 KiB
Dart
51 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class ResponsiveBuilder extends StatelessWidget {
|
|
const ResponsiveBuilder({
|
|
required this.narrowBuilder,
|
|
required this.mediumBuilder,
|
|
required this.wideBuilder,
|
|
Key? key,
|
|
}) : super(key: key);
|
|
|
|
final Widget Function(
|
|
BuildContext context,
|
|
BoxConstraints constraints,
|
|
) narrowBuilder;
|
|
|
|
final Widget Function(
|
|
BuildContext context,
|
|
BoxConstraints constraints,
|
|
) mediumBuilder;
|
|
|
|
final Widget Function(
|
|
BuildContext context,
|
|
BoxConstraints constraints,
|
|
) wideBuilder;
|
|
|
|
static bool isNarrow(BuildContext context) =>
|
|
MediaQuery.of(context).size.width < 768;
|
|
|
|
static bool isMedium(BuildContext context) =>
|
|
MediaQuery.of(context).size.width < 992 &&
|
|
MediaQuery.of(context).size.width >= 768;
|
|
|
|
static bool isWide(BuildContext context) =>
|
|
MediaQuery.of(context).size.width >= 992;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return LayoutBuilder(
|
|
builder: (context, constraints) {
|
|
if (constraints.maxWidth >= 992) {
|
|
return wideBuilder(context, constraints);
|
|
} else if (constraints.maxWidth >= 768) {
|
|
return mediumBuilder(context, constraints);
|
|
} else {
|
|
return narrowBuilder(context, constraints);
|
|
}
|
|
},
|
|
);
|
|
}
|
|
}
|