// 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 createState() => _PopupSurfaceExampleState(); } class _PopupSurfaceExampleState extends State { bool _shouldPaintSurface = true; @override Widget build(BuildContext context) { return CupertinoPageScaffold( child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ 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( context: context, builder: (BuildContext context) { return CupertinoPopupSurface( isSurfacePainted: _shouldPaintSurface, child: Container( height: 240, padding: const EdgeInsets.all(8.0), child: Column( children: [ 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), ), ), ), ], ), ), ); }, ); } }