show_cupertino_dialog.0.dart 1.84 KB
Newer Older
1 2 3 4
// 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.

5
/// Flutter code sample for [showCupertinoDialog].
6 7 8

import 'package:flutter/cupertino.dart';

9
void main() => runApp(const CupertinoDialogApp());
10

11
class CupertinoDialogApp extends StatelessWidget {
12
  const CupertinoDialogApp({super.key});
13 14 15 16

  @override
  Widget build(BuildContext context) {
    return const CupertinoApp(
17
      theme: CupertinoThemeData(brightness: Brightness.light),
18
      restorationScopeId: 'app',
19
      home: CupertinoDialogExample(),
20 21 22 23
    );
  }
}

24
class CupertinoDialogExample extends StatelessWidget {
25
  const CupertinoDialogExample({super.key});
26 27 28 29 30 31 32 33

  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: const CupertinoNavigationBar(
        middle: Text('Home'),
      ),
      child: Center(
34 35 36 37 38 39 40
        child: CupertinoButton(
          onPressed: () {
            Navigator.of(context).restorablePush(_dialogBuilder);
          },
          child: const Text('Open Dialog'),
        ),
      ),
41 42 43 44 45 46 47 48
    );
  }

  static Route<Object?> _dialogBuilder(
      BuildContext context, Object? arguments) {
    return CupertinoDialogRoute<void>(
      context: context,
      builder: (BuildContext context) {
49 50 51
        return CupertinoAlertDialog(
          title: const Text('Title'),
          content: const Text('Content'),
52
          actions: <Widget>[
53 54 55 56 57 58 59 60 61 62 63 64
            CupertinoDialogAction(
              onPressed: () {
                Navigator.pop(context);
              },
              child: const Text('Yes'),
            ),
            CupertinoDialogAction(
              onPressed: () {
                Navigator.pop(context);
              },
              child: const Text('No'),
            ),
65 66 67 68 69 70
          ],
        );
      },
    );
  }
}