mirror of
https://github.com/flutter/samples.git
synced 2025-11-14 11:28:36 +00:00
initial gallery
This commit is contained in:
35
cupertino_gallery/lib/gallery_home.dart
Normal file
35
cupertino_gallery/lib/gallery_home.dart
Normal file
@@ -0,0 +1,35 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'widgets_page.dart';
|
||||
|
||||
class GalleryHome extends StatelessWidget {
|
||||
const GalleryHome({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoTabScaffold(
|
||||
tabBar: CupertinoTabBar(
|
||||
items: const <BottomNavigationBarItem>[
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(CupertinoIcons.list_bullet),
|
||||
label: 'Widgets',
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(CupertinoIcons.settings),
|
||||
label: 'Settings',
|
||||
),
|
||||
],
|
||||
),
|
||||
tabBuilder: (BuildContext context, int index) {
|
||||
return CupertinoTabView(
|
||||
builder: (BuildContext context) {
|
||||
return switch (index) {
|
||||
0 => const WidgetsPage(),
|
||||
1 => const Center(child: Text('Settings')),
|
||||
_ => const Center(child: Text('Widgets')),
|
||||
};
|
||||
},
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
24
cupertino_gallery/lib/main.dart
Normal file
24
cupertino_gallery/lib/main.dart
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright 2022 The Flutter team. 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';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'gallery_home.dart';
|
||||
|
||||
void main() {
|
||||
runApp(const CupertinoGalleryApp());
|
||||
}
|
||||
|
||||
class CupertinoGalleryApp extends StatelessWidget {
|
||||
const CupertinoGalleryApp({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const CupertinoApp(
|
||||
title: 'Cupertino Gallery',
|
||||
home: GalleryHome(),
|
||||
);
|
||||
}
|
||||
}
|
||||
86
cupertino_gallery/lib/widget_detail_page.dart
Normal file
86
cupertino_gallery/lib/widget_detail_page.dart
Normal file
@@ -0,0 +1,86 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
import 'widgets/action_sheet_page.dart';
|
||||
import 'widgets/activity_indicator_page.dart';
|
||||
import 'widgets/alert_dialog_page.dart';
|
||||
import 'widgets/button_page.dart';
|
||||
import 'widgets/context_menu_page.dart';
|
||||
import 'widgets/date_picker_page.dart';
|
||||
import 'widgets/list_tile_page.dart';
|
||||
import 'widgets/navigation_bar_page.dart';
|
||||
import 'widgets/page_scaffold_page.dart';
|
||||
import 'widgets/picker_page.dart';
|
||||
import 'widgets/popup_surface_page.dart';
|
||||
import 'widgets/scrollbar_page.dart';
|
||||
import 'widgets/search_text_field_page.dart';
|
||||
import 'widgets/segmented_control_page.dart';
|
||||
import 'widgets/slider_page.dart';
|
||||
import 'widgets/sliding_segmented_control_page.dart';
|
||||
import 'widgets/switch_page.dart';
|
||||
import 'widgets/tab_bar_page.dart';
|
||||
import 'widgets/tab_scaffold_page.dart';
|
||||
import 'widgets/tab_view_page.dart';
|
||||
import 'widgets/text_field_page.dart';
|
||||
import 'widgets/text_theme_page.dart';
|
||||
import 'widgets/time_picker_page.dart';
|
||||
|
||||
class WidgetDetailPage extends StatelessWidget {
|
||||
const WidgetDetailPage({super.key, required this.title});
|
||||
|
||||
final String title;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
switch (title) {
|
||||
case 'Action Sheet':
|
||||
return const ActionSheetPage();
|
||||
case 'Activity Indicator':
|
||||
return const ActivityIndicatorPage();
|
||||
case 'Alert Dialog':
|
||||
return const AlertDialogPage();
|
||||
case 'Button':
|
||||
return const ButtonPage();
|
||||
case 'Context Menu':
|
||||
return const ContextMenuPage();
|
||||
case 'Date Picker':
|
||||
return const DatePickerPage();
|
||||
case 'List Tile':
|
||||
return const ListTilePage();
|
||||
case 'Picker':
|
||||
return const PickerPage();
|
||||
case 'Popup Surface':
|
||||
return const PopupSurfacePage();
|
||||
case 'Scrollbar':
|
||||
return const ScrollbarPage();
|
||||
case 'Search Text Field':
|
||||
return const SearchTextFieldPage();
|
||||
case 'Segmented Control':
|
||||
return const SegmentedControlPage();
|
||||
case 'Slider':
|
||||
return const SliderPage();
|
||||
case 'Sliding Segmented Control':
|
||||
return const SlidingSegmentedControlPage();
|
||||
case 'Switch':
|
||||
return const SwitchPage();
|
||||
case 'Tab Bar':
|
||||
return const TabBarPage();
|
||||
case 'Tab Scaffold':
|
||||
return const TabScaffoldPage();
|
||||
case 'Tab View':
|
||||
return const TabViewPage();
|
||||
case 'Text Field':
|
||||
return const TextFieldPage();
|
||||
case 'Text Theme':
|
||||
return const TextThemePage();
|
||||
case 'Time Picker':
|
||||
return const TimePickerPage();
|
||||
default:
|
||||
return const CupertinoPageScaffold(
|
||||
navigationBar: CupertinoNavigationBar(
|
||||
middle: Text('Widget Not Found'),
|
||||
),
|
||||
child: Center(child: Text('Widget Not Found')),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
49
cupertino_gallery/lib/widgets/action_sheet_page.dart
Normal file
49
cupertino_gallery/lib/widgets/action_sheet_page.dart
Normal file
@@ -0,0 +1,49 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class ActionSheetPage extends StatelessWidget {
|
||||
const ActionSheetPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Action Sheet'),
|
||||
),
|
||||
child: Center(
|
||||
child: CupertinoButton(
|
||||
child: const Text('Show Action Sheet'),
|
||||
onPressed: () {
|
||||
showCupertinoModalPopup<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) => CupertinoActionSheet(
|
||||
title: const Text('Title'),
|
||||
message: const Text('Message'),
|
||||
actions: <CupertinoActionSheetAction>[
|
||||
CupertinoActionSheetAction(
|
||||
child: const Text('Action One'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
CupertinoActionSheetAction(
|
||||
child: const Text('Action Two'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
)
|
||||
],
|
||||
cancelButton: CupertinoActionSheetAction(
|
||||
isDefaultAction: true,
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: const Text('Cancel'),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
17
cupertino_gallery/lib/widgets/activity_indicator_page.dart
Normal file
17
cupertino_gallery/lib/widgets/activity_indicator_page.dart
Normal file
@@ -0,0 +1,17 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class ActivityIndicatorPage extends StatelessWidget {
|
||||
const ActivityIndicatorPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const CupertinoPageScaffold(
|
||||
navigationBar: CupertinoNavigationBar(
|
||||
middle: Text('Activity Indicator'),
|
||||
),
|
||||
child: Center(
|
||||
child: CupertinoActivityIndicator(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
36
cupertino_gallery/lib/widgets/alert_dialog_page.dart
Normal file
36
cupertino_gallery/lib/widgets/alert_dialog_page.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class AlertDialogPage extends StatelessWidget {
|
||||
const AlertDialogPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Alert Dialog'),
|
||||
),
|
||||
child: Center(
|
||||
child: CupertinoButton(
|
||||
child: const Text('Show Alert Dialog'),
|
||||
onPressed: () {
|
||||
showCupertinoDialog<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) => CupertinoAlertDialog(
|
||||
title: const Text('Alert'),
|
||||
content: const Text('This is a sample alert dialog.'),
|
||||
actions: <CupertinoDialogAction>[
|
||||
CupertinoDialogAction(
|
||||
child: const Text('OK'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
42
cupertino_gallery/lib/widgets/button_page.dart
Normal file
42
cupertino_gallery/lib/widgets/button_page.dart
Normal file
@@ -0,0 +1,42 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class ButtonPage extends StatelessWidget {
|
||||
const ButtonPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(middle: Text('Button')),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Text(
|
||||
'CupertinoButton widget',
|
||||
style: CupertinoTheme.of(context).textTheme.textStyle,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
CupertinoButton(child: const Text('Enabled'), onPressed: () {}),
|
||||
const SizedBox(height: 16),
|
||||
const CupertinoButton(onPressed: null, child: Text('Disabled')),
|
||||
const SizedBox(height: 32),
|
||||
Text(
|
||||
'CupertinoButton.filled widget',
|
||||
style: CupertinoTheme.of(context).textTheme.textStyle,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
CupertinoButton.filled(
|
||||
child: const Text('Enabled'),
|
||||
onPressed: () {},
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
const CupertinoButton.filled(
|
||||
onPressed: null,
|
||||
child: Text('Disabled'),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
42
cupertino_gallery/lib/widgets/context_menu_page.dart
Normal file
42
cupertino_gallery/lib/widgets/context_menu_page.dart
Normal file
@@ -0,0 +1,42 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class ContextMenuPage extends StatelessWidget {
|
||||
const ContextMenuPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(middle: Text('Context Menu')),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text('Long press to activate context menu:'),
|
||||
SizedBox(height: 16),
|
||||
SizedBox(
|
||||
width: 100,
|
||||
height: 100,
|
||||
child: CupertinoContextMenu(
|
||||
actions: <Widget>[
|
||||
CupertinoContextMenuAction(
|
||||
child: const Text('Action one'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
CupertinoContextMenuAction(
|
||||
child: const Text('Action two'),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
],
|
||||
child: Container(color: CupertinoColors.activeBlue),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
22
cupertino_gallery/lib/widgets/date_picker_page.dart
Normal file
22
cupertino_gallery/lib/widgets/date_picker_page.dart
Normal file
@@ -0,0 +1,22 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class DatePickerPage extends StatelessWidget {
|
||||
const DatePickerPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Date Picker'),
|
||||
),
|
||||
child: Center(
|
||||
child: SizedBox(
|
||||
height: 200,
|
||||
child: CupertinoDatePicker(
|
||||
onDateTimeChanged: (DateTime newDate) {},
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
62
cupertino_gallery/lib/widgets/list_tile_page.dart
Normal file
62
cupertino_gallery/lib/widgets/list_tile_page.dart
Normal file
@@ -0,0 +1,62 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class ListTilePage extends StatelessWidget {
|
||||
const ListTilePage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(middle: Text('List Tile')),
|
||||
child: Center(
|
||||
child: ListView(
|
||||
children: [
|
||||
CupertinoListSection(
|
||||
children: [
|
||||
CupertinoListTile(
|
||||
title: Text('Title'),
|
||||
subtitle: Text('Subtitle'),
|
||||
leading: Icon(CupertinoIcons.info),
|
||||
trailing: Icon(CupertinoIcons.forward),
|
||||
),
|
||||
CupertinoListTile(
|
||||
title: Text('Title'),
|
||||
subtitle: Text('Subtitle'),
|
||||
leading: Icon(CupertinoIcons.person),
|
||||
trailing: Icon(CupertinoIcons.forward),
|
||||
),
|
||||
CupertinoListTile(
|
||||
title: Text('Title'),
|
||||
subtitle: Text('Subtitle'),
|
||||
leading: Icon(CupertinoIcons.wifi),
|
||||
trailing: Icon(CupertinoIcons.forward),
|
||||
),
|
||||
],
|
||||
),
|
||||
CupertinoListSection(
|
||||
children: [
|
||||
CupertinoListTile(
|
||||
title: Text('Title'),
|
||||
subtitle: Text('Subtitle'),
|
||||
leading: Icon(CupertinoIcons.search),
|
||||
trailing: Icon(CupertinoIcons.forward),
|
||||
),
|
||||
CupertinoListTile(
|
||||
title: Text('Title'),
|
||||
subtitle: Text('Subtitle'),
|
||||
leading: Icon(CupertinoIcons.heart_fill),
|
||||
trailing: Icon(CupertinoIcons.forward),
|
||||
),
|
||||
CupertinoListTile(
|
||||
title: Text('Title'),
|
||||
subtitle: Text('Subtitle'),
|
||||
leading: Icon(CupertinoIcons.ant),
|
||||
trailing: Icon(CupertinoIcons.forward),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
28
cupertino_gallery/lib/widgets/picker_page.dart
Normal file
28
cupertino_gallery/lib/widgets/picker_page.dart
Normal file
@@ -0,0 +1,28 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class PickerPage extends StatelessWidget {
|
||||
const PickerPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Picker'),
|
||||
),
|
||||
child: Center(
|
||||
child: SizedBox(
|
||||
height: 200,
|
||||
child: CupertinoPicker(
|
||||
itemExtent: 32,
|
||||
onSelectedItemChanged: (int index) {},
|
||||
children: const <Widget>[
|
||||
Text('One'),
|
||||
Text('Two'),
|
||||
Text('Three'),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
36
cupertino_gallery/lib/widgets/popup_surface_page.dart
Normal file
36
cupertino_gallery/lib/widgets/popup_surface_page.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class PopupSurfacePage extends StatelessWidget {
|
||||
const PopupSurfacePage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Popup Surface'),
|
||||
),
|
||||
child: Center(
|
||||
child: CupertinoButton(
|
||||
child: const Text('Show Popup Surface'),
|
||||
onPressed: () {
|
||||
showCupertinoModalPopup<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return CupertinoPopupSurface(
|
||||
child: Container(
|
||||
color: CupertinoColors.white,
|
||||
width: 200,
|
||||
height: 200,
|
||||
child: const Center(
|
||||
child: Text('This is a popup surface.'),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
26
cupertino_gallery/lib/widgets/scrollbar_page.dart
Normal file
26
cupertino_gallery/lib/widgets/scrollbar_page.dart
Normal file
@@ -0,0 +1,26 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class ScrollbarPage extends StatelessWidget {
|
||||
const ScrollbarPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final ScrollController _controller = ScrollController();
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: CupertinoNavigationBar(middle: Text('Scrollbar')),
|
||||
child: CupertinoScrollbar(
|
||||
controller: _controller,
|
||||
child: ListView.separated(
|
||||
controller: _controller,
|
||||
itemCount: 100,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
return CupertinoListTile(title: Text('Item $index'));
|
||||
},
|
||||
separatorBuilder: (BuildContext context, int index) {
|
||||
return Container(height: 1, color: CupertinoColors.opaqueSeparator);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
20
cupertino_gallery/lib/widgets/search_text_field_page.dart
Normal file
20
cupertino_gallery/lib/widgets/search_text_field_page.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class SearchTextFieldPage extends StatelessWidget {
|
||||
const SearchTextFieldPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const CupertinoPageScaffold(
|
||||
navigationBar: CupertinoNavigationBar(
|
||||
middle: Text('Search Text Field'),
|
||||
),
|
||||
child: Center(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(16.0),
|
||||
child: CupertinoSearchTextField(),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
36
cupertino_gallery/lib/widgets/segmented_control_page.dart
Normal file
36
cupertino_gallery/lib/widgets/segmented_control_page.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class SegmentedControlPage extends StatefulWidget {
|
||||
const SegmentedControlPage({super.key});
|
||||
|
||||
@override
|
||||
State<SegmentedControlPage> createState() => _SegmentedControlPageState();
|
||||
}
|
||||
|
||||
class _SegmentedControlPageState extends State<SegmentedControlPage> {
|
||||
int _selectedIndex = 0;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Segmented Control'),
|
||||
),
|
||||
child: Center(
|
||||
child: CupertinoSegmentedControl<int>(
|
||||
children: const <int, Widget>{
|
||||
0: Text('One'),
|
||||
1: Text('Two'),
|
||||
2: Text('Three'),
|
||||
},
|
||||
onValueChanged: (int val) {
|
||||
setState(() {
|
||||
_selectedIndex = val;
|
||||
});
|
||||
},
|
||||
groupValue: _selectedIndex,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
31
cupertino_gallery/lib/widgets/slider_page.dart
Normal file
31
cupertino_gallery/lib/widgets/slider_page.dart
Normal file
@@ -0,0 +1,31 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class SliderPage extends StatefulWidget {
|
||||
const SliderPage({super.key});
|
||||
|
||||
@override
|
||||
State<SliderPage> createState() => _SliderPageState();
|
||||
}
|
||||
|
||||
class _SliderPageState extends State<SliderPage> {
|
||||
double _value = 0.5;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Slider'),
|
||||
),
|
||||
child: Center(
|
||||
child: CupertinoSlider(
|
||||
value: _value,
|
||||
onChanged: (double value) {
|
||||
setState(() {
|
||||
_value = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class SlidingSegmentedControlPage extends StatefulWidget {
|
||||
const SlidingSegmentedControlPage({super.key});
|
||||
|
||||
@override
|
||||
State<SlidingSegmentedControlPage> createState() =>
|
||||
_SlidingSegmentedControlPageState();
|
||||
}
|
||||
|
||||
class _SlidingSegmentedControlPageState
|
||||
extends State<SlidingSegmentedControlPage> {
|
||||
int? _groupValue = 0;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Sliding Segmented Control'),
|
||||
),
|
||||
child: Center(
|
||||
child: CupertinoSlidingSegmentedControl<int>(
|
||||
children: const <int, Widget>{
|
||||
0: Text('One'),
|
||||
1: Text('Two'),
|
||||
2: Text('Three'),
|
||||
},
|
||||
onValueChanged: (int? value) {
|
||||
setState(() {
|
||||
_groupValue = value;
|
||||
});
|
||||
},
|
||||
groupValue: _groupValue,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
31
cupertino_gallery/lib/widgets/switch_page.dart
Normal file
31
cupertino_gallery/lib/widgets/switch_page.dart
Normal file
@@ -0,0 +1,31 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class SwitchPage extends StatefulWidget {
|
||||
const SwitchPage({super.key});
|
||||
|
||||
@override
|
||||
State<SwitchPage> createState() => _SwitchPageState();
|
||||
}
|
||||
|
||||
class _SwitchPageState extends State<SwitchPage> {
|
||||
bool _value = true;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Switch'),
|
||||
),
|
||||
child: Center(
|
||||
child: CupertinoSwitch(
|
||||
value: _value,
|
||||
onChanged: (bool value) {
|
||||
setState(() {
|
||||
_value = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
22
cupertino_gallery/lib/widgets/text_field_page.dart
Normal file
22
cupertino_gallery/lib/widgets/text_field_page.dart
Normal file
@@ -0,0 +1,22 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class TextFieldPage extends StatelessWidget {
|
||||
const TextFieldPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const CupertinoPageScaffold(
|
||||
navigationBar: CupertinoNavigationBar(
|
||||
middle: Text('Text Field'),
|
||||
),
|
||||
child: Center(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(16.0),
|
||||
child: CupertinoTextField(
|
||||
placeholder: 'Enter text',
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
58
cupertino_gallery/lib/widgets/text_theme_page.dart
Normal file
58
cupertino_gallery/lib/widgets/text_theme_page.dart
Normal file
@@ -0,0 +1,58 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class TextThemePage extends StatelessWidget {
|
||||
const TextThemePage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Text Theme'),
|
||||
),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Text(
|
||||
'This is the default text style',
|
||||
style: CupertinoTheme.of(context).textTheme.textStyle,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'This is the action text style',
|
||||
style: CupertinoTheme.of(context).textTheme.actionTextStyle,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'This is the tab label text style',
|
||||
style: CupertinoTheme.of(context).textTheme.tabLabelTextStyle,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'This is the nav title text style',
|
||||
style: CupertinoTheme.of(context).textTheme.navTitleTextStyle,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'This is the nav large title text style',
|
||||
style: CupertinoTheme.of(context)
|
||||
.textTheme
|
||||
.navLargeTitleTextStyle,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'This is the picker text style',
|
||||
style: CupertinoTheme.of(context).textTheme.pickerTextStyle,
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
'This is the date time picker text style',
|
||||
style:
|
||||
CupertinoTheme.of(context).textTheme.dateTimePickerTextStyle,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
22
cupertino_gallery/lib/widgets/time_picker_page.dart
Normal file
22
cupertino_gallery/lib/widgets/time_picker_page.dart
Normal file
@@ -0,0 +1,22 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class TimePickerPage extends StatelessWidget {
|
||||
const TimePickerPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
navigationBar: const CupertinoNavigationBar(
|
||||
middle: Text('Time Picker'),
|
||||
),
|
||||
child: Center(
|
||||
child: SizedBox(
|
||||
height: 200,
|
||||
child: CupertinoTimerPicker(
|
||||
onTimerDurationChanged: (Duration newDuration) {},
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
75
cupertino_gallery/lib/widgets_page.dart
Normal file
75
cupertino_gallery/lib/widgets_page.dart
Normal file
@@ -0,0 +1,75 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'widget_detail_page.dart';
|
||||
|
||||
class WidgetsPage extends StatelessWidget {
|
||||
const WidgetsPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CupertinoPageScaffold(
|
||||
child: CustomScrollView(
|
||||
slivers: <Widget>[
|
||||
CupertinoSliverNavigationBar(largeTitle: Text('Cupertino Gallery')),
|
||||
SliverFillRemaining(
|
||||
child: ListView(
|
||||
children: [
|
||||
CustomCupertinoListTile(title: 'Action Sheet'),
|
||||
CustomCupertinoListTile(title: 'Activity Indicator'),
|
||||
CustomCupertinoListTile(title: 'Alert Dialog'),
|
||||
CustomCupertinoListTile(title: 'Button'),
|
||||
CustomCupertinoListTile(title: 'Context Menu'),
|
||||
CustomCupertinoListTile(title: 'Date Picker'),
|
||||
CustomCupertinoListTile(title: 'List Tile'),
|
||||
CustomCupertinoListTile(title: 'Picker'),
|
||||
CustomCupertinoListTile(title: 'Popup Surface'),
|
||||
CustomCupertinoListTile(title: 'Scrollbar'),
|
||||
CustomCupertinoListTile(title: 'Search Text Field'),
|
||||
CustomCupertinoListTile(title: 'Segmented Control'),
|
||||
CustomCupertinoListTile(title: 'Slider'),
|
||||
CustomCupertinoListTile(title: 'Sliding Segmented Control'),
|
||||
CustomCupertinoListTile(title: 'Switch'),
|
||||
CustomCupertinoListTile(title: 'Tab Bar'),
|
||||
CustomCupertinoListTile(title: 'Tab Scaffold'),
|
||||
CustomCupertinoListTile(title: 'Tab View'),
|
||||
CustomCupertinoListTile(title: 'Text Field'),
|
||||
CustomCupertinoListTile(title: 'Text Theme'),
|
||||
CustomCupertinoListTile(title: 'Time Picker'),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CustomCupertinoListTile extends StatelessWidget {
|
||||
const CustomCupertinoListTile({super.key, required this.title});
|
||||
|
||||
final String title;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.of(context).push(
|
||||
CupertinoPageRoute<void>(
|
||||
builder: (BuildContext context) {
|
||||
return WidgetDetailPage(title: title);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 12.0),
|
||||
decoration: const BoxDecoration(
|
||||
border: Border(bottom: BorderSide(color: CupertinoColors.separator)),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: <Widget>[Text(title), const Icon(CupertinoIcons.forward)],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user