mirror of
https://github.com/flutter/samples.git
synced 2025-11-08 22:09:06 +00:00
adds new components to the gallery
This commit is contained in:
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
"context": {
|
||||||
|
"fileName": "/.prompts/llm.md"
|
||||||
|
},
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"dart": {
|
"dart": {
|
||||||
"command": "dart",
|
"command": "dart",
|
||||||
@@ -6,6 +9,5 @@
|
|||||||
"mcp-server"
|
"mcp-server"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"contextFileName": "/.prompts/llm.md"
|
}
|
||||||
}
|
|
||||||
11
.gemini/settings.json.orig
Normal file
11
.gemini/settings.json.orig
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"dart": {
|
||||||
|
"command": "dart",
|
||||||
|
"args": [
|
||||||
|
"mcp-server"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contextFileName": "/.prompts/llm.md"
|
||||||
|
}
|
||||||
@@ -4,14 +4,17 @@ import 'widgets/action_sheet_page.dart';
|
|||||||
import 'widgets/activity_indicator_page.dart';
|
import 'widgets/activity_indicator_page.dart';
|
||||||
import 'widgets/alert_dialog_page.dart';
|
import 'widgets/alert_dialog_page.dart';
|
||||||
import 'widgets/button_page.dart';
|
import 'widgets/button_page.dart';
|
||||||
|
import 'widgets/checkbox_page.dart';
|
||||||
import 'widgets/context_menu_page.dart';
|
import 'widgets/context_menu_page.dart';
|
||||||
import 'widgets/date_picker_page.dart';
|
import 'widgets/date_picker_page.dart';
|
||||||
import 'widgets/list_tile_page.dart';
|
import 'widgets/list_tile_page.dart';
|
||||||
import 'widgets/picker_page.dart';
|
import 'widgets/picker_page.dart';
|
||||||
import 'widgets/popup_surface_page.dart';
|
import 'widgets/popup_surface_page.dart';
|
||||||
|
import 'widgets/radio_page.dart';
|
||||||
import 'widgets/scrollbar_page.dart';
|
import 'widgets/scrollbar_page.dart';
|
||||||
import 'widgets/search_text_field_page.dart';
|
import 'widgets/search_text_field_page.dart';
|
||||||
import 'widgets/segmented_control_page.dart';
|
import 'widgets/segmented_control_page.dart';
|
||||||
|
import 'widgets/sheet_page.dart';
|
||||||
import 'widgets/slider_page.dart';
|
import 'widgets/slider_page.dart';
|
||||||
import 'widgets/sliding_segmented_control_page.dart';
|
import 'widgets/sliding_segmented_control_page.dart';
|
||||||
import 'widgets/switch_page.dart';
|
import 'widgets/switch_page.dart';
|
||||||
@@ -35,6 +38,8 @@ class WidgetDetailPage extends StatelessWidget {
|
|||||||
return const AlertDialogPage();
|
return const AlertDialogPage();
|
||||||
case 'Button':
|
case 'Button':
|
||||||
return const ButtonPage();
|
return const ButtonPage();
|
||||||
|
case 'Checkbox':
|
||||||
|
return const CheckboxPage();
|
||||||
case 'Context Menu':
|
case 'Context Menu':
|
||||||
return const ContextMenuPage();
|
return const ContextMenuPage();
|
||||||
case 'Date Picker':
|
case 'Date Picker':
|
||||||
@@ -45,12 +50,16 @@ class WidgetDetailPage extends StatelessWidget {
|
|||||||
return const PickerPage();
|
return const PickerPage();
|
||||||
case 'Popup Surface':
|
case 'Popup Surface':
|
||||||
return const PopupSurfacePage();
|
return const PopupSurfacePage();
|
||||||
|
case 'Radio':
|
||||||
|
return const RadioPage();
|
||||||
case 'Scrollbar':
|
case 'Scrollbar':
|
||||||
return const ScrollbarPage();
|
return const ScrollbarPage();
|
||||||
case 'Search Text Field':
|
case 'Search Text Field':
|
||||||
return const SearchTextFieldPage();
|
return const SearchTextFieldPage();
|
||||||
case 'Segmented Control':
|
case 'Segmented Control':
|
||||||
return const SegmentedControlPage();
|
return const SegmentedControlPage();
|
||||||
|
case 'Sheet':
|
||||||
|
return const SheetPage();
|
||||||
case 'Slider':
|
case 'Slider':
|
||||||
return const SliderPage();
|
return const SliderPage();
|
||||||
case 'Sliding Segmented Control':
|
case 'Sliding Segmented Control':
|
||||||
|
|||||||
@@ -6,9 +6,7 @@ class AlertDialogPage extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return CupertinoPageScaffold(
|
return CupertinoPageScaffold(
|
||||||
navigationBar: const CupertinoNavigationBar(
|
navigationBar: const CupertinoNavigationBar(middle: Text('Alert Dialog')),
|
||||||
middle: Text('Alert Dialog'),
|
|
||||||
),
|
|
||||||
child: Center(
|
child: Center(
|
||||||
child: CupertinoButton(
|
child: CupertinoButton(
|
||||||
child: const Text('Show Alert Dialog'),
|
child: const Text('Show Alert Dialog'),
|
||||||
@@ -25,6 +23,13 @@ class AlertDialogPage extends StatelessWidget {
|
|||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
CupertinoDialogAction(
|
||||||
|
isDefaultAction: true,
|
||||||
|
child: const Text('NO'),
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.pop(context);
|
||||||
|
},
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
31
cupertino_gallery/lib/widgets/checkbox_page.dart
Normal file
31
cupertino_gallery/lib/widgets/checkbox_page.dart
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
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: (bool? value) {
|
||||||
|
setState(() {
|
||||||
|
_value = value!;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@ class ListTilePage extends StatelessWidget {
|
|||||||
child: Center(
|
child: Center(
|
||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
CupertinoListSection(
|
CupertinoListSection.insetGrouped(
|
||||||
children: [
|
children: [
|
||||||
CupertinoListTile(
|
CupertinoListTile(
|
||||||
title: Text('Title'),
|
title: Text('Title'),
|
||||||
|
|||||||
46
cupertino_gallery/lib/widgets/radio_page.dart
Normal file
46
cupertino_gallery/lib/widgets/radio_page.dart
Normal 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: (int? 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),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,13 +5,13 @@ class ScrollbarPage extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final ScrollController _controller = ScrollController();
|
final ScrollController controller = ScrollController();
|
||||||
return CupertinoPageScaffold(
|
return CupertinoPageScaffold(
|
||||||
navigationBar: CupertinoNavigationBar(middle: Text('Scrollbar')),
|
navigationBar: CupertinoNavigationBar(middle: Text('Scrollbar')),
|
||||||
child: CupertinoScrollbar(
|
child: CupertinoScrollbar(
|
||||||
controller: _controller,
|
controller: controller,
|
||||||
child: ListView.separated(
|
child: ListView.separated(
|
||||||
controller: _controller,
|
controller: controller,
|
||||||
itemCount: 100,
|
itemCount: 100,
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
return CupertinoListTile(title: Text('Item $index'));
|
return CupertinoListTile(title: Text('Item $index'));
|
||||||
|
|||||||
39
cupertino_gallery/lib/widgets/sheet_page.dart
Normal file
39
cupertino_gallery/lib/widgets/sheet_page.dart
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
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>(
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
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'),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,14 +17,17 @@ class WidgetsPage extends StatelessWidget {
|
|||||||
CustomCupertinoListTile(title: 'Activity Indicator'),
|
CustomCupertinoListTile(title: 'Activity Indicator'),
|
||||||
CustomCupertinoListTile(title: 'Alert Dialog'),
|
CustomCupertinoListTile(title: 'Alert Dialog'),
|
||||||
CustomCupertinoListTile(title: 'Button'),
|
CustomCupertinoListTile(title: 'Button'),
|
||||||
|
CustomCupertinoListTile(title: 'Checkbox'),
|
||||||
CustomCupertinoListTile(title: 'Context Menu'),
|
CustomCupertinoListTile(title: 'Context Menu'),
|
||||||
CustomCupertinoListTile(title: 'Date Picker'),
|
CustomCupertinoListTile(title: 'Date Picker'),
|
||||||
CustomCupertinoListTile(title: 'List Tile'),
|
CustomCupertinoListTile(title: 'List Tile'),
|
||||||
CustomCupertinoListTile(title: 'Picker'),
|
CustomCupertinoListTile(title: 'Picker'),
|
||||||
CustomCupertinoListTile(title: 'Popup Surface'),
|
CustomCupertinoListTile(title: 'Popup Surface'),
|
||||||
|
CustomCupertinoListTile(title: 'Radio'),
|
||||||
CustomCupertinoListTile(title: 'Scrollbar'),
|
CustomCupertinoListTile(title: 'Scrollbar'),
|
||||||
CustomCupertinoListTile(title: 'Search Text Field'),
|
CustomCupertinoListTile(title: 'Search Text Field'),
|
||||||
CustomCupertinoListTile(title: 'Segmented Control'),
|
CustomCupertinoListTile(title: 'Segmented Control'),
|
||||||
|
CustomCupertinoListTile(title: 'Sheet'),
|
||||||
CustomCupertinoListTile(title: 'Slider'),
|
CustomCupertinoListTile(title: 'Slider'),
|
||||||
CustomCupertinoListTile(title: 'Sliding Segmented Control'),
|
CustomCupertinoListTile(title: 'Sliding Segmented Control'),
|
||||||
CustomCupertinoListTile(title: 'Switch'),
|
CustomCupertinoListTile(title: 'Switch'),
|
||||||
|
|||||||
Reference in New Issue
Block a user