μ§λ μ νλΈ UI ν΄λ‘ λΆλΆμμ μμλλ©΄ μ’μκ² κ°μ λ΄μ©μ λλ€.
μ£Όμ΄μ§ μ½λλ SingleChildScrollView
μμ ―μ μ¬μ©νμ¬ κ°λ‘ λ°©ν₯μΌλ‘ μ€ν¬λ‘€ κ°λ₯ν λ©λ΄λ₯Ό ꡬννλ λΆλΆμ
λλ€. **SingleChildScrollView
**λ νλμ μμ μμ ―λ§ κ°μ§ μ μλ μ€ν¬λ‘€ κ°λ₯ν μμ ―μ
λλ€.
scrollDirection
μμ±μ **Axis.horizontal
**μΌλ‘ μ€μ λμ΄ μμΌλ―λ‘, κ°λ‘ λ°©ν₯μΌλ‘ μ€ν¬λ‘€ κ°λ₯ν λ©λ΄λ₯Ό λ§λ€κ³ μ ν©λλ€.
child
μμ±μλ Row
μμ ―μ΄ μ¬μ©λμμ΅λλ€. **Row
**λ μνμΌλ‘ λ°°μ΄λλ μμ μμ ―λ€μ νμ
λλ€. μ΄ κ²½μ° **menus
**λΌλ 리μ€νΈλ₯Ό μ¬μ©νμ¬ TopMenuButton
μμ ―μ κ°μ§ μ¬λ¬ κ°μ μμ μμ ―μ λ§λλλ€.
**menus.map((e) => Padding(padding: const EdgeInsets.symmetric(horizontal:4), child: TopMenuButton(title: e))).toList()
**λ menus
리μ€νΈμ κ° μμμ λν΄ Padding
μμ ―μ μ μ©ν ν TopMenuButton
μμ ―μ μμ±ν©λλ€. Padding
μμ ―μ κ°λ‘λ‘ 4ν½μ
μ μ¬λ°±μ μ£Όλ μν μ ν©λλ€.
λ°λΌμ, μ£Όμ΄μ§ μ½λλ SingleChildScrollView
μμ ―μ μ¬μ©νμ¬ κ°λ‘ λ°©ν₯μΌλ‘ μ€ν¬λ‘€ κ°λ₯ν λ©λ΄λ₯Ό λ§λ€κ³ , κ° λ©λ΄μλ TopMenuButton
μμ ―μ΄ ν¬ν¨λλ©°, TopMenuButton
μμ ―μ menus
리μ€νΈμ μμλ₯Ό κΈ°λ°μΌλ‘ μμ±λ©λλ€.
νλ©΄μ μ νμ λ»νκ³ λ€λ₯Έ νλ©΄μΌλ‘ μ νμ push, λ€μ λλμμ€κΈ°λ pop μ λλ€
μλ‘μ΄ νλ©΄μΌλ‘ μ΄λνλ €λ©΄
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(bulder: (context) => const SecondRoute()),
);
}
μλ νλ©΄μΌλ‘ λμμ€λ €λ©΄
onPressed: () {
Navigator.pop(context);
}
pub devμ 보면 go_router ν¨ν€μ§λ₯Ό μ¬μ©ν©λλ€.
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
void main() => runApp(const MyApp());
/// The route configuration.
final GoRouter _router = GoRouter(
routes: <RouteBase>[
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) {
return const HomeScreen();
},
routes: <RouteBase>[
GoRoute(
path: 'details',
builder: (BuildContext context, GoRouterState state) {
return const DetailsScreen();
},
),
],
),
],
);
μ΄ν΄νκΈ° μ΄λ €μ λ λ΄μ©κ³Ό κΈ°μ΅νκ³ μΆμκ²μ..