blob: 5b3b6c3c5b9b228b12b704e369a971d806dab76b [file] [log] [blame]
// 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 [CupertinoSheetRoute].
void main() {
runApp(const CupertinoSheetApp());
}
class CupertinoSheetApp extends StatelessWidget {
const CupertinoSheetApp({super.key});
@override
Widget build(BuildContext context) {
return const CupertinoApp(
title: 'Scrollable Cupertino Sheet',
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: const CupertinoNavigationBar(
middle: Text('Scrollable Cupertino Sheet Example'),
automaticBackgroundVisibility: false,
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CupertinoButton.filled(
onPressed: () {
Navigator.of(context).push(
CupertinoSheetRoute<void>(
scrollableBuilder:
(BuildContext context, ScrollController controller) =>
_ScrollableSheetBody(scrollController: controller),
),
);
},
child: const Text('Open Sheet'),
),
],
),
),
);
}
}
class _ScrollableSheetBody extends StatelessWidget {
const _ScrollableSheetBody({required this.scrollController});
final ScrollController scrollController;
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
backgroundColor: CupertinoColors.systemGrey3,
middle: const Text('Scrollable Sheet'),
automaticBackgroundVisibility: false,
leading: CupertinoButton(
padding: EdgeInsets.zero,
child: const Text('Close'),
onPressed: () {
CupertinoSheetRoute.popSheet(context);
},
),
),
child: CustomScrollView(
controller: scrollController,
primary: false,
slivers: <Widget>[
SliverList(
delegate: SliverChildBuilderDelegate((
BuildContext context,
int index,
) {
return Container(
alignment: Alignment.center,
height: 100,
child: const Text('Scroll Me'),
);
}, childCount: 20),
),
],
),
);
}
}