snapshot of https://github.com/flutter/samples.git (main, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Main Branch CI / Test Flutter beta on ubuntu-latest (push) Has been skipped
Main Branch CI / Test Flutter stable on ubuntu-latest (push) Has been skipped
Main Branch CI / Test Flutter beta on macos-latest (push) Has been cancelled
Main Branch CI / Test Flutter stable on macos-latest (push) Has been cancelled

This commit is contained in:
upstream-mirror
2026-09-16 01:43:26 +05:00
commit 9ed6a80afa
2886 changed files with 140184 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
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: (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,13 @@
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,41 @@
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: (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);
},
),
CupertinoDialogAction(
isDefaultAction: true,
child: const Text('NO'),
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,29 @@
import 'package:flutter/cupertino.dart';
class CheckboxPage extends StatefulWidget {
const CheckboxPage({super.key});
@override
State<CheckboxPage> createState() => _CheckboxPageState();
}
class _CheckboxPageState extends State<CheckboxPage> {
bool _value = false;
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: const CupertinoNavigationBar(middle: Text('Checkbox')),
child: Center(
child: CupertinoCheckbox(
value: _value,
onChanged: (value) {
setState(() {
_value = value!;
});
},
),
),
);
}
}

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,18 @@
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: (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.insetGrouped(
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,22 @@
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: (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: (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,46 @@
import 'package:flutter/cupertino.dart';
class RadioPage extends StatefulWidget {
const RadioPage({super.key});
@override
State<RadioPage> createState() => _RadioPageState();
}
class _RadioPageState extends State<RadioPage> {
int _selectedValue = 0;
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: const CupertinoNavigationBar(middle: Text('Radio')),
child: Center(
child: RadioGroup(
groupValue: _selectedValue,
onChanged: (value) {
setState(() {
_selectedValue = value!;
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CupertinoListTile(
title: const Text('Option 1'),
leading: CupertinoRadio<int>(value: 0),
),
CupertinoListTile(
title: const Text('Option 2'),
leading: CupertinoRadio<int>(value: 1),
),
CupertinoListTile(
title: const Text('Option 3'),
leading: CupertinoRadio<int>(value: 2),
),
],
),
),
),
);
}
}

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: (context, index) {
return CupertinoListTile(title: Text('Item $index'));
},
separatorBuilder: (context, index) {
return Container(height: 1, color: CupertinoColors.opaqueSeparator);
},
),
),
);
}
}

View File

@@ -0,0 +1,18 @@
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: <int, Widget>{
0: Text('One'),
1: Text('Two'),
2: Text('Three'),
},
onValueChanged: (val) {
setState(() {
_selectedIndex = val;
});
},
groupValue: _selectedIndex,
),
),
);
}
}

View File

@@ -0,0 +1,38 @@
import 'package:flutter/cupertino.dart';
class SheetPage extends StatelessWidget {
const SheetPage({super.key});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: const CupertinoNavigationBar(middle: Text('Sheet')),
child: Center(
child: CupertinoButton.filled(
child: const Text('Show Sheet'),
onPressed: () {
Navigator.of(context).push(
CupertinoSheetRoute<void>(
scrollableBuilder:
(context, controller) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: const Text('Sheet'),
trailing: GestureDetector(
child: const Icon(CupertinoIcons.xmark),
onTap: () {
Navigator.of(context).pop();
},
),
),
child: const Center(child: Text('This is a sheet')),
);
},
),
);
},
),
),
);
}
}

View File

@@ -0,0 +1,29 @@
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: (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: (value) {
setState(() {
_groupValue = value;
});
},
groupValue: _groupValue,
),
),
);
}
}

View File

@@ -0,0 +1,29 @@
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: (value) {
setState(() {
_value = value;
});
},
),
),
);
}
}

View File

@@ -0,0 +1,18 @@
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,57 @@
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,20 @@
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: (newDuration) {},
),
),
),
);
}
}