1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-12 15:58:32 +00:00

initial gallery

This commit is contained in:
Eric Windmill
2025-08-06 11:50:45 -04:00
parent 74378fc6f0
commit d6138c9ab8
150 changed files with 5390 additions and 0 deletions

View 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'),
),
),
);
},
),
),
);
}
}

View 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(),
),
);
}
}

View 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);
},
),
],
),
);
},
),
),
);
}
}

View 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'),
),
],
),
),
);
}
}

View 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),
),
),
],
),
),
);
}
}

View 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) {},
),
),
),
);
}
}

View 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),
),
],
),
],
),
),
);
}
}

View 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'),
],
),
),
),
);
}
}

View 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.'),
),
),
);
},
);
},
),
),
);
}
}

View 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);
},
),
),
);
}
}

View 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(),
),
),
);
}
}

View 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,
),
),
);
}
}

View 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;
});
},
),
),
);
}
}

View File

@@ -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,
),
),
);
}
}

View 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;
});
},
),
),
);
}
}

View 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',
),
),
),
);
}
}

View 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,
),
],
),
),
);
}
}

View 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) {},
),
),
),
);
}
}