mirror of
https://github.com/flutter/samples.git
synced 2026-09-05 17:10:37 +00:00
Release 3.47 (#2879)
Minor updates for release 3.47 ## Pre-launch Checklist - [x] I read the [Flutter Style Guide] _recently_, and have followed its advice. - [x] I signed the [CLA]. - [x] I read the [Contributors Guide]. - [x] I have added sample code updates to the [changelog]. - [x] I updated/added relevant documentation (doc comments with `///`). If you need help, consider asking for advice on the #hackers-devrel channel on [Discord]. <!-- Links --> [Flutter Style Guide]: https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md [CLA]: https://cla.developers.google.com/ [Discord]: https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md [Contributors Guide]: https://github.com/flutter/samples/blob/main/CONTRIBUTING.md [changelog]: ../CHANGELOG.md --------- Co-authored-by: Parker Lougheed <parlough@gmail.com>
This commit is contained in:
@@ -1,28 +1 @@
|
||||
# This file configures the analyzer, which statically analyzes Dart code to
|
||||
# check for errors, warnings, and lints.
|
||||
#
|
||||
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
|
||||
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
|
||||
# invoked from the command line by running `flutter analyze`.
|
||||
|
||||
# The following line activates a set of recommended lints for Flutter apps,
|
||||
# packages, and plugins designed to encourage good coding practices.
|
||||
include: package:flutter_lints/flutter.yaml
|
||||
|
||||
linter:
|
||||
# The lint rules applied to this project can be customized in the
|
||||
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
||||
# included above or to enable additional rules. A list of all available lints
|
||||
# and their documentation is published at https://dart.dev/lints.
|
||||
#
|
||||
# Instead of disabling a lint rule for the entire project in the
|
||||
# section below, it can also be suppressed for a single line of code
|
||||
# or a specific dart file by using the `// ignore: name_of_lint` and
|
||||
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
|
||||
# producing the lint.
|
||||
rules:
|
||||
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
||||
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
||||
|
||||
# Additional information about this file can be found at
|
||||
# https://dart.dev/guides/language/analysis-options
|
||||
include: ../analysis_options.yaml
|
||||
|
||||
@@ -31,9 +31,9 @@ class GalleryHome extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
),
|
||||
tabBuilder: (BuildContext context, int index) {
|
||||
tabBuilder: (context, index) {
|
||||
return CupertinoTabView(
|
||||
builder: (BuildContext context) {
|
||||
builder: (context) {
|
||||
return switch (index) {
|
||||
0 => const WidgetsPage(),
|
||||
1 => SettingsPage(
|
||||
|
||||
@@ -54,7 +54,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
title: const Text('Dark Mode'),
|
||||
trailing: CupertinoSwitch(
|
||||
value: isDarkMode,
|
||||
onChanged: (bool isActive) {
|
||||
onChanged: (isActive) {
|
||||
setState(() {
|
||||
isDarkMode = isActive;
|
||||
widget.onThemeChange(isActive);
|
||||
@@ -70,7 +70,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
value: _textSize,
|
||||
min: 0.5,
|
||||
max: 1.5,
|
||||
onChanged: (double value) {
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_textSize = value;
|
||||
});
|
||||
@@ -103,7 +103,7 @@ class _SettingsPageState extends State<SettingsPage> {
|
||||
onTap: () {
|
||||
showCupertinoDialog<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) => CupertinoAlertDialog(
|
||||
builder: (context) => CupertinoAlertDialog(
|
||||
title: const Text('Reset Settings'),
|
||||
content: const Text(
|
||||
'Are you sure you want to reset all settings?',
|
||||
|
||||
@@ -13,7 +13,7 @@ class ActionSheetPage extends StatelessWidget {
|
||||
onPressed: () {
|
||||
showCupertinoModalPopup<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) => CupertinoActionSheet(
|
||||
builder: (context) => CupertinoActionSheet(
|
||||
title: const Text('Title'),
|
||||
message: const Text('Message'),
|
||||
actions: <CupertinoActionSheetAction>[
|
||||
|
||||
@@ -13,7 +13,7 @@ class AlertDialogPage extends StatelessWidget {
|
||||
onPressed: () {
|
||||
showCupertinoDialog<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) => CupertinoAlertDialog(
|
||||
builder: (context) => CupertinoAlertDialog(
|
||||
title: const Text('Alert'),
|
||||
content: const Text('This is a sample alert dialog.'),
|
||||
actions: <CupertinoDialogAction>[
|
||||
|
||||
@@ -17,7 +17,7 @@ class _CheckboxPageState extends State<CheckboxPage> {
|
||||
child: Center(
|
||||
child: CupertinoCheckbox(
|
||||
value: _value,
|
||||
onChanged: (bool? value) {
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_value = value!;
|
||||
});
|
||||
|
||||
@@ -10,7 +10,7 @@ class DatePickerPage extends StatelessWidget {
|
||||
child: Center(
|
||||
child: SizedBox(
|
||||
height: 200,
|
||||
child: CupertinoDatePicker(onDateTimeChanged: (DateTime newDate) {}),
|
||||
child: CupertinoDatePicker(onDateTimeChanged: (newDate) {}),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -12,7 +12,7 @@ class PickerPage extends StatelessWidget {
|
||||
height: 200,
|
||||
child: CupertinoPicker(
|
||||
itemExtent: 32,
|
||||
onSelectedItemChanged: (int index) {},
|
||||
onSelectedItemChanged: (index) {},
|
||||
children: const <Widget>[Text('One'), Text('Two'), Text('Three')],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -15,7 +15,7 @@ class PopupSurfacePage extends StatelessWidget {
|
||||
onPressed: () {
|
||||
showCupertinoModalPopup<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
builder: (context) {
|
||||
return CupertinoPopupSurface(
|
||||
child: Container(
|
||||
color: CupertinoColors.white,
|
||||
|
||||
@@ -17,7 +17,7 @@ class _RadioPageState extends State<RadioPage> {
|
||||
child: Center(
|
||||
child: RadioGroup(
|
||||
groupValue: _selectedValue,
|
||||
onChanged: (int? value) {
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_selectedValue = value!;
|
||||
});
|
||||
|
||||
@@ -13,10 +13,10 @@ class ScrollbarPage extends StatelessWidget {
|
||||
child: ListView.separated(
|
||||
controller: controller,
|
||||
itemCount: 100,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
itemBuilder: (context, index) {
|
||||
return CupertinoListTile(title: Text('Item $index'));
|
||||
},
|
||||
separatorBuilder: (BuildContext context, int index) {
|
||||
separatorBuilder: (context, index) {
|
||||
return Container(height: 1, color: CupertinoColors.opaqueSeparator);
|
||||
},
|
||||
),
|
||||
|
||||
@@ -23,7 +23,7 @@ class _SegmentedControlPageState extends State<SegmentedControlPage> {
|
||||
1: Text('Two'),
|
||||
2: Text('Three'),
|
||||
},
|
||||
onValueChanged: (int val) {
|
||||
onValueChanged: (val) {
|
||||
setState(() {
|
||||
_selectedIndex = val;
|
||||
});
|
||||
|
||||
@@ -13,20 +13,21 @@ class SheetPage extends StatelessWidget {
|
||||
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')),
|
||||
);
|
||||
},
|
||||
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')),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
@@ -17,7 +17,7 @@ class _SliderPageState extends State<SliderPage> {
|
||||
child: Center(
|
||||
child: CupertinoSlider(
|
||||
value: _value,
|
||||
onChanged: (double value) {
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_value = value;
|
||||
});
|
||||
|
||||
@@ -25,7 +25,7 @@ class _SlidingSegmentedControlPageState
|
||||
1: Text('Two'),
|
||||
2: Text('Three'),
|
||||
},
|
||||
onValueChanged: (int? value) {
|
||||
onValueChanged: (value) {
|
||||
setState(() {
|
||||
_groupValue = value;
|
||||
});
|
||||
|
||||
@@ -17,7 +17,7 @@ class _SwitchPageState extends State<SwitchPage> {
|
||||
child: Center(
|
||||
child: CupertinoSwitch(
|
||||
value: _value,
|
||||
onChanged: (bool value) {
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_value = value;
|
||||
});
|
||||
|
||||
@@ -11,7 +11,7 @@ class TimePickerPage extends StatelessWidget {
|
||||
child: SizedBox(
|
||||
height: 200,
|
||||
child: CupertinoTimerPicker(
|
||||
onTimerDurationChanged: (Duration newDuration) {},
|
||||
onTimerDurationChanged: (newDuration) {},
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -54,7 +54,7 @@ class CustomCupertinoListTile extends StatelessWidget {
|
||||
onTap: () {
|
||||
Navigator.of(context).push(
|
||||
CupertinoPageRoute<void>(
|
||||
builder: (BuildContext context) {
|
||||
builder: (context) {
|
||||
return WidgetDetailPage(title: title);
|
||||
},
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user