-
-
Save legalcodes/6b00f558718e9f23de5c61503aa1bfe4 to your computer and use it in GitHub Desktop.
Modify main axis alignment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:async'; | |
import 'package:flutter/material.dart'; | |
import 'package:flutter_test/flutter_test.dart'; | |
class MyWidget extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return Row( | |
mainAxisAlignment: MainAxisAlignment.start, | |
children: [ | |
BlueBox(), | |
BlueBox(), | |
BlueBox(), | |
], | |
); | |
} | |
} | |
class BlueBox extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return Container( | |
width: 50, | |
height: 50, | |
decoration: BoxDecoration( | |
color: Colors.blue, | |
border: Border.all(), | |
), | |
); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MyApp extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return Directionality( | |
textDirection: TextDirection.ltr, | |
child: Container( | |
color: Color(0xffeeeeee), | |
child: Center( | |
child: Container( | |
child: MyWidget(), | |
color: Color(0xffcccccc), | |
), | |
), | |
), | |
); | |
} | |
} | |
Future<void> main() async { | |
final completer = Completer<void>(); | |
runApp(MyApp()); | |
WidgetsFlutterBinding.ensureInitialized() | |
.addPostFrameCallback((timestamp) async { | |
completer.complete(); | |
}); | |
await completer.future; | |
final controller = LiveWidgetController(WidgetsBinding.instance); | |
final rows = controller.widgetList(find.byType(Row)); | |
if (rows.length == 0) { | |
_result(false, ['Couldn\'t find a Row!']); | |
return; | |
} | |
if (rows.length > 1) { | |
_result(false, ['Found ${rows.length} Rows, rather than just one.']); | |
return; | |
} | |
final row = rows.first as Row; | |
if (row.mainAxisSize != MainAxisSize.max) { | |
_result(false, ['It\'s best to leave the mainAxisSize set to MainAxisSize.max, so there\'s space for the alignments to take effect.']); | |
return; | |
} | |
if (row.children.length != 3 || row.children.any((w) => w is! BlueBox)) { | |
_result(false, ['The Row should have three children, all BlueBox widgets.']); | |
return; | |
} | |
if (row.mainAxisAlignment == MainAxisAlignment.start) { | |
_result(false, ['MainAxisAlignment.start positions the BlueBox widgets on the left of the main axis. Change the value to MainAxisAlignment.end.']); | |
} else if (row.mainAxisAlignment == MainAxisAlignment.end) { | |
_result(true, ['MainAxisAlignment.end positions the BlueBox widgets on the right of the main axis.']); | |
} else if (row.mainAxisAlignment == MainAxisAlignment.center) { | |
_result(true, ['MainAxisAlignment.center positions the BlueBox widgets at the middle of the main axis.']); | |
} else if (row.mainAxisAlignment == MainAxisAlignment.spaceBetween) { | |
_result(true, ['The extra space is divided between the BlueBox widgets.']); | |
} else if (row.mainAxisAlignment == MainAxisAlignment.spaceEvenly) { | |
_result(true, ['The extra space is divided evenly between the BlueBox widgets and before and after them.']); | |
} else if (row.mainAxisAlignment == MainAxisAlignment.spaceAround) { | |
_result(true, ['Similar to MainAxisAlignment.spaceEvenly, but reduces half of the space before the first BlueBox widget and after the last BlueBox widget to half of the width between the BlueBox widgets.']); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment