Hari 17: Layout — Row, Column, Stack
60 min
Last updated 09 Apr 2026
Row & Column
Row dan Column adalah widget layout paling fundamental di Flutter.
import "package:flutter/material.dart";
void main() => runApp(MaterialApp(home: Scaffold(
body: Padding(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("Nama", style: TextStyle(fontWeight: FontWeight.bold)),
Text("Budi Santoso"),
],
),
Divider(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text("Saldo"),
Text("Rp 1.500.000", style: TextStyle(color: Colors.green)),
],
),
],
),
),
)));
Expanded & Flexible
Row(
children: [
Expanded(flex: 2, child: Container(color: Colors.blue, height: 50)),
Expanded(flex: 1, child: Container(color: Colors.red, height: 50)),
Expanded(flex: 1, child: Container(color: Colors.green, height: 50)),
],
)
Stack & Positioned
Stack(
children: [
Image.network("https://example.com/bg.jpg", fit: BoxFit.cover),
Positioned(
bottom: 16,
left: 16,
child: Text("Overlay Text", style: TextStyle(color: Colors.white, fontSize: 24)),
),
Positioned(
top: 8,
right: 8,
child: IconButton(icon: Icon(Icons.favorite, color: Colors.red), onPressed: () {}),
),
],
)
💡
Notice: Ini simulasi konsep widget tree Flutter. Di Flutter nyata, gunakan Widget classes dari package:flutter/material.dart.
Assignment
Simulasikan widget tree dengan Column, AppBar, dan Row berisi 3 Text.
Expected output:
<Column>
<AppBar title=My App />
<Row mainAxisAlignment=spaceBetween>
<Text text=Home />
<Text text=About />
<Text text=Contact />
</Row>
</Column>
Dart
main.dart
Solution
Output