// Flutter code sample for {{element}}
//
{{description}}

{{code-dartImports}}

import 'package:flutter/cupertino.dart';
{{code-imports}}

void main() => runApp(const MyApp());

/// This is the main application widget.
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return const CupertinoApp(
      title: _title,
      home: CupertinoPageScaffold(
        navigationBar: CupertinoNavigationBar(middle: const Text(_title)),
        body: MyStatelessWidget(),
      ),
    );
  }
}


{{code-preamble}}

/// This is the stateless widget that the main application instantiates.
class MyStatelessWidget extends StatelessWidget {
  const MyStatelessWidget({Key? key}) : super(key: key);

  @override
{{code}}
}
