diff --git a/packages/flutter/lib/src/material/bottom_sheet.dart b/packages/flutter/lib/src/material/bottom_sheet.dart index 4eb58c4fa7..dca197391c 100644 --- a/packages/flutter/lib/src/material/bottom_sheet.dart +++ b/packages/flutter/lib/src/material/bottom_sheet.dart @@ -179,10 +179,14 @@ class _ModalBottomSheet extends StatefulWidget { } class _ModalBottomSheetState extends State<_ModalBottomSheet> { + void _navigatorPop() { + Navigator.pop(context); + } + @override Widget build(BuildContext context) { return new GestureDetector( - onTap: () => Navigator.pop(context), + onTap: _navigatorPop, child: new AnimatedBuilder( animation: widget.route.animation, builder: (BuildContext context, Widget child) { diff --git a/packages/flutter/lib/src/material/date_picker.dart b/packages/flutter/lib/src/material/date_picker.dart index 4917058631..02223ca9ca 100644 --- a/packages/flutter/lib/src/material/date_picker.dart +++ b/packages/flutter/lib/src/material/date_picker.dart @@ -735,6 +735,10 @@ class _DatePickerDialogState extends State<_DatePickerDialog> { Navigator.pop(context, _selectedDate); } + void _handleMonthHeaderTap() { + _handleModeChanged(DatePickerMode.year); + } + Widget _buildPicker() { assert(_mode != null); switch (_mode) { @@ -746,7 +750,7 @@ class _DatePickerDialogState extends State<_DatePickerDialog> { firstDate: widget.firstDate, lastDate: widget.lastDate, selectableDayPredicate: widget.selectableDayPredicate, - onMonthHeaderTap: () { _handleModeChanged(DatePickerMode.year); }, + onMonthHeaderTap: _handleMonthHeaderTap, ); case DatePickerMode.year: return new YearPicker( diff --git a/packages/flutter/lib/src/material/ink_well.dart b/packages/flutter/lib/src/material/ink_well.dart index fda219e787..e337eee6df 100644 --- a/packages/flutter/lib/src/material/ink_well.dart +++ b/packages/flutter/lib/src/material/ink_well.dart @@ -265,11 +265,7 @@ class _InkResponseState extends State with AutomaticKe shape: widget.highlightShape, borderRadius: widget.borderRadius, rectCallback: widget.getRectCallback(referenceBox), - onRemoved: () { - assert(_lastHighlight != null); - _lastHighlight = null; - updateKeepAlive(); - }, + onRemoved: _handleInkHighlightRemoval, ); updateKeepAlive(); } else { @@ -283,6 +279,12 @@ class _InkResponseState extends State with AutomaticKe widget.onHighlightChanged(value); } + void _handleInkHighlightRemoval() { + assert(_lastHighlight != null); + _lastHighlight = null; + updateKeepAlive(); + } + void _handleTapDown(TapDownDetails details) { final RenderBox referenceBox = context.findRenderObject(); final RectCallback rectCallback = widget.getRectCallback(referenceBox); diff --git a/packages/flutter/lib/src/material/paginated_data_table.dart b/packages/flutter/lib/src/material/paginated_data_table.dart index 1c260627ab..53b4eeec55 100644 --- a/packages/flutter/lib/src/material/paginated_data_table.dart +++ b/packages/flutter/lib/src/material/paginated_data_table.dart @@ -272,6 +272,14 @@ class PaginatedDataTableState extends State { return result; } + void _handlePrevious() { + pageTo(math.max(_firstRowIndex - widget.rowsPerPage, 0)); + } + + void _handleNext() { + pageTo(_firstRowIndex + widget.rowsPerPage); + } + final GlobalKey _tableKey = new GlobalKey(); @override @@ -346,18 +354,14 @@ class PaginatedDataTableState extends State { icon: const Icon(Icons.chevron_left), padding: EdgeInsets.zero, tooltip: 'Previous page', - onPressed: _firstRowIndex <= 0 ? null : () { - pageTo(math.max(_firstRowIndex - widget.rowsPerPage, 0)); - } + onPressed: _firstRowIndex <= 0 ? null : _handlePrevious ), new Container(width: 24.0), new IconButton( icon: const Icon(Icons.chevron_right), padding: EdgeInsets.zero, tooltip: 'Next page', - onPressed: (!_rowCountApproximate && (_firstRowIndex + widget.rowsPerPage >= _rowCount)) ? null : () { - pageTo(_firstRowIndex + widget.rowsPerPage); - } + onPressed: (!_rowCountApproximate && (_firstRowIndex + widget.rowsPerPage >= _rowCount)) ? null : _handleNext ), new Container(width: 14.0), ]); diff --git a/packages/flutter/lib/src/material/tooltip.dart b/packages/flutter/lib/src/material/tooltip.dart index b3824bba63..a155fcb546 100644 --- a/packages/flutter/lib/src/material/tooltip.dart +++ b/packages/flutter/lib/src/material/tooltip.dart @@ -177,16 +177,18 @@ class _TooltipState extends State with SingleTickerProviderStateMixin { super.dispose(); } + void _handleLongPress() { + final bool tooltipCreated = ensureTooltipVisible(); + if (tooltipCreated) + Feedback.forLongPress(context); + } + @override Widget build(BuildContext context) { assert(Overlay.of(context, debugRequiredFor: widget) != null); return new GestureDetector( behavior: HitTestBehavior.opaque, - onLongPress: () { - final bool tooltipCreated = ensureTooltipVisible(); - if (tooltipCreated) - Feedback.forLongPress(context); - }, + onLongPress: _handleLongPress, excludeFromSemantics: true, child: new Semantics( label: widget.message, diff --git a/packages/flutter/lib/src/material/user_accounts_drawer_header.dart b/packages/flutter/lib/src/material/user_accounts_drawer_header.dart index bab8fbddde..1d26a40d79 100644 --- a/packages/flutter/lib/src/material/user_accounts_drawer_header.dart +++ b/packages/flutter/lib/src/material/user_accounts_drawer_header.dart @@ -183,6 +183,13 @@ class UserAccountsDrawerHeader extends StatefulWidget { class _UserAccountsDrawerHeaderState extends State { bool _isOpen = false; + void _handleDetailsPressed() { + setState(() { + _isOpen = !_isOpen; + }); + widget.onDetailsPressed(); + } + @override Widget build(BuildContext context) { assert(debugCheckHasMaterial(context)); @@ -204,12 +211,7 @@ class _UserAccountsDrawerHeaderState extends State { accountName: widget.accountName, accountEmail: widget.accountEmail, isOpen: _isOpen, - onTap: widget.onDetailsPressed == null ? null : () { - setState(() { - _isOpen = !_isOpen; - }); - widget.onDetailsPressed(); - }, + onTap: widget.onDetailsPressed == null ? null : _handleDetailsPressed, ), ], ), diff --git a/packages/flutter/lib/src/widgets/drag_target.dart b/packages/flutter/lib/src/widgets/drag_target.dart index 2b289fbea7..711c0eb37e 100644 --- a/packages/flutter/lib/src/widgets/drag_target.dart +++ b/packages/flutter/lib/src/widgets/drag_target.dart @@ -528,12 +528,14 @@ class _DragAvatar extends Drag { _enteredTargets.add(target); return target.didEnter(this); }, - orElse: () => null + orElse: _null ); _activeTarget = newTarget; } + static Null _null() => null; + Iterable<_DragTargetState> _getDragTargets(List path) sync* { // Look for the RenderBoxes that corresponds to the hit target (the hit target // widgets build RenderMetaData boxes for us for this purpose).