mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Turning if
chains into shorter switch
statements (#144977)
This pull request is part of the effort to solve issue #144903. In the past, my efforts to reduce line length involved refactoring away from switch statements, but unlike [yesterday's PR](https://github.com/flutter/flutter/pull/144905), this one is full of switch statements that make things more concise!
This commit is contained in:
parent
017f33df6c
commit
b9e537336f
@ -259,18 +259,13 @@ class _MyHomePageState extends State<MyHomePage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
if (widget.setup == Setup.canvasSaveLayer) {
|
switch (widget.setup) {
|
||||||
_loadImage().then((ui.Image? value) {
|
case Setup.canvasSaveLayer:
|
||||||
setState(() {
|
_loadImage().then((ui.Image? value) => setState(() { _image = value; }));
|
||||||
_image = value;
|
case Setup.drawnImage:
|
||||||
});
|
_drawImage().then((ui.Image? value) => setState(() { _image = value; }));
|
||||||
});
|
case Setup.image || Setup.blur || Setup.none:
|
||||||
} else if (widget.setup == Setup.drawnImage) {
|
break;
|
||||||
_drawImage().then((ui.Image? value) {
|
|
||||||
setState(() {
|
|
||||||
_image = value;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
@ -55,23 +55,18 @@ class _ColorfulButtonState extends State<ColorfulButton> {
|
|||||||
KeyEventResult _handleKeyPress(FocusNode node, KeyEvent event) {
|
KeyEventResult _handleKeyPress(FocusNode node, KeyEvent event) {
|
||||||
if (event is KeyDownEvent) {
|
if (event is KeyDownEvent) {
|
||||||
debugPrint('Focus node ${node.debugLabel} got key event: ${event.logicalKey}');
|
debugPrint('Focus node ${node.debugLabel} got key event: ${event.logicalKey}');
|
||||||
if (event.logicalKey == LogicalKeyboardKey.keyR) {
|
switch (event.logicalKey) {
|
||||||
|
case LogicalKeyboardKey.keyR:
|
||||||
debugPrint('Changing color to red.');
|
debugPrint('Changing color to red.');
|
||||||
setState(() {
|
setState(() { _color = Colors.red; });
|
||||||
_color = Colors.red;
|
|
||||||
});
|
|
||||||
return KeyEventResult.handled;
|
return KeyEventResult.handled;
|
||||||
} else if (event.logicalKey == LogicalKeyboardKey.keyG) {
|
case LogicalKeyboardKey.keyG:
|
||||||
debugPrint('Changing color to green.');
|
debugPrint('Changing color to green.');
|
||||||
setState(() {
|
setState(() { _color = Colors.green; });
|
||||||
_color = Colors.green;
|
|
||||||
});
|
|
||||||
return KeyEventResult.handled;
|
return KeyEventResult.handled;
|
||||||
} else if (event.logicalKey == LogicalKeyboardKey.keyB) {
|
case LogicalKeyboardKey.keyB:
|
||||||
debugPrint('Changing color to blue.');
|
debugPrint('Changing color to blue.');
|
||||||
setState(() {
|
setState(() { _color = Colors.blue; });
|
||||||
_color = Colors.blue;
|
|
||||||
});
|
|
||||||
return KeyEventResult.handled;
|
return KeyEventResult.handled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,23 +36,18 @@ class _FocusExampleState extends State<FocusExample> {
|
|||||||
KeyEventResult _handleKeyPress(FocusNode node, KeyEvent event) {
|
KeyEventResult _handleKeyPress(FocusNode node, KeyEvent event) {
|
||||||
if (event is KeyDownEvent) {
|
if (event is KeyDownEvent) {
|
||||||
debugPrint('Focus node ${node.debugLabel} got key event: ${event.logicalKey}');
|
debugPrint('Focus node ${node.debugLabel} got key event: ${event.logicalKey}');
|
||||||
if (event.logicalKey == LogicalKeyboardKey.keyR) {
|
switch (event.logicalKey) {
|
||||||
|
case LogicalKeyboardKey.keyR:
|
||||||
debugPrint('Changing color to red.');
|
debugPrint('Changing color to red.');
|
||||||
setState(() {
|
setState(() { _color = Colors.red; });
|
||||||
_color = Colors.red;
|
|
||||||
});
|
|
||||||
return KeyEventResult.handled;
|
return KeyEventResult.handled;
|
||||||
} else if (event.logicalKey == LogicalKeyboardKey.keyG) {
|
case LogicalKeyboardKey.keyG:
|
||||||
debugPrint('Changing color to green.');
|
debugPrint('Changing color to green.');
|
||||||
setState(() {
|
setState(() { _color = Colors.green; });
|
||||||
_color = Colors.green;
|
|
||||||
});
|
|
||||||
return KeyEventResult.handled;
|
return KeyEventResult.handled;
|
||||||
} else if (event.logicalKey == LogicalKeyboardKey.keyB) {
|
case LogicalKeyboardKey.keyB:
|
||||||
debugPrint('Changing color to blue.');
|
debugPrint('Changing color to blue.');
|
||||||
setState(() {
|
setState(() { _color = Colors.blue; });
|
||||||
_color = Colors.blue;
|
|
||||||
});
|
|
||||||
return KeyEventResult.handled;
|
return KeyEventResult.handled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -372,34 +372,31 @@ class CupertinoListSection extends StatelessWidget {
|
|||||||
height: dividerHeight,
|
height: dividerHeight,
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget? headerWidget;
|
TextStyle style = CupertinoTheme.of(context).textTheme.textStyle;
|
||||||
|
|
||||||
|
Widget? headerWidget, footerWidget;
|
||||||
|
switch (type) {
|
||||||
|
case CupertinoListSectionType.base:
|
||||||
|
style = style.merge(TextStyle(
|
||||||
|
fontSize: 13.0,
|
||||||
|
color: CupertinoDynamicColor.resolve(_kHeaderFooterColor, context),
|
||||||
|
));
|
||||||
|
if (header != null) {
|
||||||
|
headerWidget = DefaultTextStyle(style: style, child: header!);
|
||||||
|
}
|
||||||
|
if (footer != null) {
|
||||||
|
footerWidget = DefaultTextStyle(style: style, child: footer!);
|
||||||
|
}
|
||||||
|
case CupertinoListSectionType.insetGrouped:
|
||||||
if (header != null) {
|
if (header != null) {
|
||||||
headerWidget = DefaultTextStyle(
|
headerWidget = DefaultTextStyle(
|
||||||
style: CupertinoTheme.of(context).textTheme.textStyle.merge(
|
style: style.merge(const TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)),
|
||||||
type == CupertinoListSectionType.base
|
|
||||||
? TextStyle(
|
|
||||||
fontSize: 13.0,
|
|
||||||
color: CupertinoDynamicColor.resolve(
|
|
||||||
_kHeaderFooterColor, context))
|
|
||||||
: const TextStyle(
|
|
||||||
fontSize: 20.0, fontWeight: FontWeight.bold),
|
|
||||||
),
|
|
||||||
child: header!,
|
child: header!,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget? footerWidget;
|
|
||||||
if (footer != null) {
|
if (footer != null) {
|
||||||
footerWidget = DefaultTextStyle(
|
footerWidget = DefaultTextStyle(style: style, child: footer!);
|
||||||
style: type == CupertinoListSectionType.base
|
}
|
||||||
? CupertinoTheme.of(context).textTheme.textStyle.merge(TextStyle(
|
|
||||||
fontSize: 13.0,
|
|
||||||
color: CupertinoDynamicColor.resolve(
|
|
||||||
_kHeaderFooterColor, context),
|
|
||||||
))
|
|
||||||
: CupertinoTheme.of(context).textTheme.textStyle,
|
|
||||||
child: footer!,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget? decoratedChildrenGroup;
|
Widget? decoratedChildrenGroup;
|
||||||
|
@ -73,16 +73,16 @@ class _CombiningGestureArenaMember extends GestureArenaMember {
|
|||||||
if (_resolved) {
|
if (_resolved) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (disposition == GestureDisposition.rejected) {
|
switch (disposition) {
|
||||||
|
case GestureDisposition.accepted:
|
||||||
|
_winner ??= _owner.captain ?? member;
|
||||||
|
_entry!.resolve(disposition);
|
||||||
|
case GestureDisposition.rejected:
|
||||||
_members.remove(member);
|
_members.remove(member);
|
||||||
member.rejectGesture(_pointer);
|
member.rejectGesture(_pointer);
|
||||||
if (_members.isEmpty) {
|
if (_members.isEmpty) {
|
||||||
_entry!.resolve(disposition);
|
_entry!.resolve(disposition);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
assert(disposition == GestureDisposition.accepted);
|
|
||||||
_winner ??= _owner.captain ?? member;
|
|
||||||
_entry!.resolve(disposition);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2754,25 +2754,20 @@ class _HighlightPainter extends CustomPainter {
|
|||||||
..color = color
|
..color = color
|
||||||
..style = PaintingStyle.fill;
|
..style = PaintingStyle.fill;
|
||||||
|
|
||||||
final Rect rectLeft = Rect.fromLTWH(0, 0, size.width / 2, size.height);
|
final bool rtl = switch (textDirection) {
|
||||||
final Rect rectRight = Rect.fromLTWH(size.width / 2, 0, size.width / 2, size.height);
|
TextDirection.rtl || null => true,
|
||||||
|
TextDirection.ltr => false,
|
||||||
|
};
|
||||||
|
|
||||||
switch (style) {
|
switch (style) {
|
||||||
case _HighlightPainterStyle.highlightTrailing:
|
case _HighlightPainterStyle.highlightLeading when rtl:
|
||||||
canvas.drawRect(
|
case _HighlightPainterStyle.highlightTrailing when !rtl:
|
||||||
textDirection == TextDirection.ltr ? rectRight : rectLeft,
|
canvas.drawRect(Rect.fromLTWH(size.width / 2, 0, size.width / 2, size.height), paint);
|
||||||
paint,
|
|
||||||
);
|
|
||||||
case _HighlightPainterStyle.highlightLeading:
|
case _HighlightPainterStyle.highlightLeading:
|
||||||
canvas.drawRect(
|
case _HighlightPainterStyle.highlightTrailing:
|
||||||
textDirection == TextDirection.ltr ? rectLeft : rectRight,
|
canvas.drawRect(Rect.fromLTWH(0, 0, size.width / 2, size.height), paint);
|
||||||
paint,
|
|
||||||
);
|
|
||||||
case _HighlightPainterStyle.highlightAll:
|
case _HighlightPainterStyle.highlightAll:
|
||||||
canvas.drawRect(
|
canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), paint);
|
||||||
Rect.fromLTWH(0, 0, size.width, size.height),
|
|
||||||
paint,
|
|
||||||
);
|
|
||||||
case _HighlightPainterStyle.none:
|
case _HighlightPainterStyle.none:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1281,17 +1281,13 @@ class _CurvedAnimationBuilderState extends State<_CurvedAnimationBuilder> {
|
|||||||
_animationDirection = status;
|
_animationDirection = status;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
switch (status) {
|
||||||
if (status == AnimationStatus.completed || status == AnimationStatus.dismissed) {
|
case AnimationStatus.forward || AnimationStatus.reverse when _preservedDirection != null:
|
||||||
setState(() {
|
break;
|
||||||
_preservedDirection = null;
|
case AnimationStatus.forward || AnimationStatus.reverse:
|
||||||
});
|
setState(() { _preservedDirection = status; });
|
||||||
}
|
case AnimationStatus.completed || AnimationStatus.dismissed:
|
||||||
|
setState(() { _preservedDirection = null; });
|
||||||
if (_preservedDirection == null && (status == AnimationStatus.forward || status == AnimationStatus.reverse)) {
|
|
||||||
setState(() {
|
|
||||||
_preservedDirection = status;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,27 +59,25 @@ Future<void> startTransitionBetween(
|
|||||||
}
|
}
|
||||||
|
|
||||||
CupertinoPageScaffold? scaffoldForNavBar(Widget? navBar) {
|
CupertinoPageScaffold? scaffoldForNavBar(Widget? navBar) {
|
||||||
if (navBar is CupertinoNavigationBar || navBar == null) {
|
switch (navBar) {
|
||||||
|
case CupertinoNavigationBar? _:
|
||||||
return CupertinoPageScaffold(
|
return CupertinoPageScaffold(
|
||||||
navigationBar: navBar as CupertinoNavigationBar? ?? const CupertinoNavigationBar(),
|
navigationBar: navBar ?? const CupertinoNavigationBar(),
|
||||||
child: const Placeholder(),
|
child: const Placeholder(),
|
||||||
);
|
);
|
||||||
} else if (navBar is CupertinoSliverNavigationBar) {
|
case CupertinoSliverNavigationBar():
|
||||||
return CupertinoPageScaffold(
|
return CupertinoPageScaffold(
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(slivers: <Widget>[
|
||||||
slivers: <Widget>[
|
|
||||||
navBar,
|
navBar,
|
||||||
// Add filler so it's scrollable.
|
// Add filler so it's scrollable.
|
||||||
const SliverToBoxAdapter(
|
const SliverToBoxAdapter(child: Placeholder(fallbackHeight: 1000.0)),
|
||||||
child: Placeholder(fallbackHeight: 1000.0),
|
]),
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
default:
|
||||||
assert(false, 'Unexpected nav bar type ${navBar.runtimeType}');
|
assert(false, 'Unexpected nav bar type ${navBar.runtimeType}');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Finder flying(WidgetTester tester, Finder finder) {
|
Finder flying(WidgetTester tester, Finder finder) {
|
||||||
final ContainerRenderObjectMixin<RenderBox, StackParentData> theater = tester.renderObject(find.byType(Overlay));
|
final ContainerRenderObjectMixin<RenderBox, StackParentData> theater = tester.renderObject(find.byType(Overlay));
|
||||||
|
@ -240,17 +240,13 @@ void main() {
|
|||||||
painter.paint(testCanvas, size);
|
painter.paint(testCanvas, size);
|
||||||
final Rect rect = captureRect();
|
final Rect rect = captureRect();
|
||||||
|
|
||||||
switch (direction) {
|
switch (axisDirectionToAxis(direction)) {
|
||||||
case AxisDirection.up:
|
case Axis.vertical:
|
||||||
case AxisDirection.down:
|
expect(margin, switch (textDirection) {
|
||||||
expect(
|
TextDirection.ltr => size.width - rect.right,
|
||||||
margin,
|
TextDirection.rtl => rect.left,
|
||||||
textDirection == TextDirection.ltr
|
});
|
||||||
? size.width - rect.right
|
case Axis.horizontal:
|
||||||
: rect.left,
|
|
||||||
);
|
|
||||||
case AxisDirection.left:
|
|
||||||
case AxisDirection.right:
|
|
||||||
expect(margin, size.height - rect.bottom);
|
expect(margin, size.height - rect.bottom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -520,25 +520,20 @@ class _MismatchedCall extends Error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool _evaluatePainter(Object? object, Canvas canvas, PaintingContext context) {
|
bool _evaluatePainter(Object? object, Canvas canvas, PaintingContext context) {
|
||||||
if (object is _ContextPainterFunction) {
|
switch (object) {
|
||||||
final _ContextPainterFunction function = object;
|
case final _ContextPainterFunction function:
|
||||||
function(context, Offset.zero);
|
function(context, Offset.zero);
|
||||||
} else if (object is _CanvasPainterFunction) {
|
case final _CanvasPainterFunction function:
|
||||||
final _CanvasPainterFunction function = object;
|
|
||||||
function(canvas);
|
function(canvas);
|
||||||
} else {
|
case final Finder finder:
|
||||||
if (object is Finder) {
|
|
||||||
TestAsyncUtils.guardSync();
|
TestAsyncUtils.guardSync();
|
||||||
final Finder finder = object;
|
final RenderObject? result = finder.evaluate().single.renderObject;
|
||||||
object = finder.evaluate().single.renderObject;
|
return (result?..paint(context, Offset.zero)) != null;
|
||||||
}
|
case final RenderObject renderObject:
|
||||||
if (object is RenderObject) {
|
|
||||||
final RenderObject renderObject = object;
|
|
||||||
renderObject.paint(context, Offset.zero);
|
renderObject.paint(context, Offset.zero);
|
||||||
} else {
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,14 +133,12 @@ class StdoutHandler {
|
|||||||
compilerOutput?.complete(output);
|
compilerOutput?.complete(output);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (state == StdoutState.CollectDiagnostic) {
|
switch (state) {
|
||||||
if (!_suppressCompilerMessages) {
|
case StdoutState.CollectDiagnostic when _suppressCompilerMessages:
|
||||||
_logger.printError(message);
|
|
||||||
} else {
|
|
||||||
_logger.printTrace(message);
|
_logger.printTrace(message);
|
||||||
}
|
case StdoutState.CollectDiagnostic:
|
||||||
} else {
|
_logger.printError(message);
|
||||||
assert(state == StdoutState.CollectDependencies);
|
case StdoutState.CollectDependencies:
|
||||||
switch (message[0]) {
|
switch (message[0]) {
|
||||||
case '+':
|
case '+':
|
||||||
sources.add(Uri.parse(message.substring(1)));
|
sources.add(Uri.parse(message.substring(1)));
|
||||||
|
@ -101,16 +101,15 @@ class DaemonInputStreamConverter {
|
|||||||
|
|
||||||
int start = 0;
|
int start = 0;
|
||||||
while (start < chunk.length) {
|
while (start < chunk.length) {
|
||||||
if (state == _InputStreamParseState.json) {
|
switch (state) {
|
||||||
|
case _InputStreamParseState.json:
|
||||||
start += _processChunkInJsonMode(chunk, start);
|
start += _processChunkInJsonMode(chunk, start);
|
||||||
} else if (state == _InputStreamParseState.binary) {
|
case _InputStreamParseState.binary:
|
||||||
final int bytesSent = _addBinaryChunk(chunk, start, remainingBinaryLength);
|
final int bytesSent = _addBinaryChunk(chunk, start, remainingBinaryLength);
|
||||||
start += bytesSent;
|
start += bytesSent;
|
||||||
remainingBinaryLength -= bytesSent;
|
remainingBinaryLength -= bytesSent;
|
||||||
|
|
||||||
if (remainingBinaryLength <= 0) {
|
if (remainingBinaryLength <= 0) {
|
||||||
assert(remainingBinaryLength == 0);
|
assert(remainingBinaryLength == 0);
|
||||||
|
|
||||||
unawaited(currentBinaryStream.close());
|
unawaited(currentBinaryStream.close());
|
||||||
state = _InputStreamParseState.json;
|
state = _InputStreamParseState.json;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user