| // 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 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}'), | |
| ], | |
| ), | |
| ), | |
| ); | |
| }, | |
| ), | |
| ); | |
| } | |
| } |