| // 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/cupertino.dart'; |
| |
| /// Flutter code sample for [CupertinoPopupSurface]. |
| |
| void main() => runApp(const PopupSurfaceApp()); |
| |
| class PopupSurfaceApp extends StatelessWidget { |
| const PopupSurfaceApp({super.key}); |
| |
| @override |
| Widget build(BuildContext context) { |
| return const CupertinoApp(home: PopupSurfaceExample()); |
| } |
| } |
| |
| class PopupSurfaceExample extends StatefulWidget { |
| const PopupSurfaceExample({super.key}); |
| |
| @override |
| State<PopupSurfaceExample> createState() => _PopupSurfaceExampleState(); |
| } |
| |
| class _PopupSurfaceExampleState extends State<PopupSurfaceExample> { |
| bool _shouldPaintSurface = true; |
| |
| @override |
| Widget build(BuildContext context) { |
| return CupertinoPageScaffold( |
| child: Center( |
| child: Column( |
| mainAxisAlignment: MainAxisAlignment.center, |
| children: <Widget>[ |
| Row( |
| mainAxisSize: MainAxisSize.min, |
| mainAxisAlignment: MainAxisAlignment.spaceBetween, |
| children: <Widget>[ |
| const Text('Paint surface'), |
| const SizedBox(width: 16.0), |
| CupertinoSwitch( |
| value: _shouldPaintSurface, |
| onChanged: (bool value) => setState(() => _shouldPaintSurface = value), |
| ), |
| ], |
| ), |
| CupertinoButton( |
| onPressed: () => _showPopupSurface(context), |
| child: const Text('Show popup'), |
| ), |
| ], |
| ), |
| ), |
| ); |
| } |
| |
| void _showPopupSurface(BuildContext context) { |
| showCupertinoModalPopup<void>( |
| context: context, |
| builder: (BuildContext context) { |
| return CupertinoPopupSurface( |
| isSurfacePainted: _shouldPaintSurface, |
| child: Container( |
| height: 240, |
| padding: const EdgeInsets.all(8.0), |
| child: Column( |
| children: <Widget>[ |
| Expanded( |
| child: Container( |
| alignment: Alignment.center, |
| decoration: |
| _shouldPaintSurface |
| ? null |
| : BoxDecoration( |
| color: CupertinoTheme.of(context).scaffoldBackgroundColor, |
| borderRadius: BorderRadius.circular(8.0), |
| ), |
| child: const Text('This is a popup surface.'), |
| ), |
| ), |
| const SizedBox(height: 8.0), |
| SizedBox( |
| width: double.infinity, |
| child: CupertinoButton( |
| color: |
| _shouldPaintSurface |
| ? null |
| : CupertinoTheme.of(context).scaffoldBackgroundColor, |
| onPressed: () => Navigator.pop(context), |
| child: const Text('Close', style: TextStyle(color: CupertinoColors.systemBlue)), |
| ), |
| ), |
| ], |
| ), |
| ), |
| ); |
| }, |
| ); |
| } |
| } |