Skip to content

Commit 09f3de4

Browse files
committed
ResponsiveScaledBox Creation
- Create ResponsiveScaledBox for AutoScale functionality.
1 parent 38e79ae commit 09f3de4

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

lib/responsive_framework.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ export 'breakpoint.dart';
44
export 'responsive_breakpoints.dart';
55
export 'responsive_grid.dart';
66
export 'responsive_row_column.dart';
7+
export 'responsive_scaled_box.dart';
78
export 'responsive_value.dart';
89
export 'utils/scroll_behavior.dart';

lib/responsive_scaled_box.dart

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import 'package:flutter/material.dart';
2+
3+
class ResponsiveScaledBox extends StatelessWidget {
4+
final double width;
5+
final Widget child;
6+
7+
const ResponsiveScaledBox(
8+
{Key? key, required this.width, required this.child})
9+
: super(key: key);
10+
11+
@override
12+
Widget build(BuildContext context) {
13+
MediaQueryData mediaQueryData = MediaQuery.of(context);
14+
15+
return MediaQuery(
16+
data: mediaQueryData,
17+
child: LayoutBuilder(
18+
builder: (context, constraints) {
19+
double aspectRatio = constraints.maxWidth / constraints.maxHeight;
20+
double scaledHeight = width / aspectRatio;
21+
22+
return FittedBox(
23+
fit: BoxFit.fitWidth,
24+
alignment: Alignment.topCenter,
25+
child: Container(
26+
width: width,
27+
height: scaledHeight,
28+
alignment: Alignment.center,
29+
child: child,
30+
),
31+
);
32+
},
33+
),
34+
);
35+
}
36+
}

0 commit comments

Comments
 (0)