// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; void main() async { runApp(const ResizeApp()); } class ResizeApp extends StatefulWidget { const ResizeApp({super.key}); static const double resizeBy = 10.0; static const Key heightLabel = Key('height label'); static const Key widthLabel = Key('width label'); static const Key extendedFab = Key('extended FAB'); static const MethodChannel platform = MethodChannel('samples.flutter.dev/resize'); static Future<void> resize(Size size) async { await ResizeApp.platform.invokeMethod<void>( 'resize', <String, dynamic>{ 'width': size.width, 'height': size.height, } ); } @override State<ResizeApp> createState() => _ResizeAppState(); } class _ResizeAppState extends State<ResizeApp> { @override Widget build(BuildContext context) { return MaterialApp( home: Builder( builder: (BuildContext context) { final Size currentSize = MediaQuery.of(context).size; return Scaffold( floatingActionButton: FloatingActionButton.extended( key: ResizeApp.extendedFab, label: const Text('Resize'), onPressed: () { final Size nextSize = Size( currentSize.width + ResizeApp.resizeBy, currentSize.height + ResizeApp.resizeBy, ); ResizeApp.resize(nextSize); }, ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( key: ResizeApp.widthLabel, 'width: ${currentSize.width}' ), Text( key: ResizeApp.heightLabel, 'height: ${currentSize.height}', ), ], ), ), ); } ), ); } }