Browse Source

[flutter_example_packages] Fix rotate resize

merge-requests/21/head
Vitaliy Zarubin 2 years ago
parent
commit
ecdf164d97
  1. 13
      example/lib/pages/home/page.dart
  2. 28
      example/lib/widgets/base/app_state.dart

13
example/lib/pages/home/page.dart

@ -29,7 +29,7 @@ class _HomePageState extends AppState<HomePage> {
final ScrollController _controllerListView = ScrollController();
@override
void didChangeMetrics() {
void onDidChangeMetrics() {
setState(() {
_hH = _header.getHeight() ?? 0;
});
@ -125,11 +125,11 @@ class _HomePageState extends AppState<HomePage> {
child: Container(
key: _header,
width: double.infinity,
padding: const EdgeInsets.only(
padding: EdgeInsets.only(
left: 20,
right: 20,
top: 30,
bottom: 90,
top: media.orientation == Orientation.portrait ? 30 : 10,
bottom: media.orientation == Orientation.portrait ? 90 : 70,
),
child: Column(
mainAxisSize: MainAxisSize.min,
@ -139,7 +139,10 @@ class _HomePageState extends AppState<HomePage> {
l10n.homeWelcomeTitle,
color: Colors.white,
),
const SizedBox(height: 40),
SizedBox(
height:
media.orientation == Orientation.portrait ? 40 : 20,
),
TextBodyLarge(
l10n.homeWelcomeText(packages.length),
color: Colors.white,

28
example/lib/widgets/base/app_state.dart

@ -10,25 +10,35 @@ abstract class AppState<T extends StatefulWidget> extends State<T>
);
void onPostFrameCallback() {}
void onDidChangeMetrics() {}
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
WidgetsBinding.instance.addPostFrameCallback((_) {
didChangeMetrics();
void _delayedChangeMetrics() {
onDidChangeMetrics();
Future.delayed(const Duration(milliseconds: 100), () {
didChangeMetrics();
onDidChangeMetrics();
});
Future.delayed(const Duration(milliseconds: 200), () {
didChangeMetrics();
onDidChangeMetrics();
});
Future.delayed(const Duration(milliseconds: 500), () {
didChangeMetrics();
onDidChangeMetrics();
});
}
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
WidgetsBinding.instance.addPostFrameCallback((_) {
_delayedChangeMetrics();
});
}
@override
void didChangeMetrics() {
_delayedChangeMetrics();
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);

Loading…
Cancel
Save