import 'package:flutter/material.dart'; /// 약속 (설계 §7-2 AdaptiveRow, 점검 10/22): 앞 묶음 [lead] 과 뒤 묶음 [trail] 을 놓는다. /// 폭이 [minWidth] 이상이면 한 줄 (앞 · 빈칸 · 뒤), 모자라면 두 줄 (앞 줄 아래에 뒤 묶음을 줄바꿈하며 오른쪽 정렬). /// 넘치지 않는다 (좁은 창 - 폰 세로의 두 창). 넓은 화면의 모양은 한 줄 Row 그대로. class AdaptiveRow extends StatelessWidget { const AdaptiveRow({super.key, required this.lead, required this.trail, required this.minWidth}); final List lead; final List trail; final double minWidth; @override Widget build(BuildContext context) => LayoutBuilder( builder: (context, box) => box.maxWidth >= minWidth ? Row(children: [...lead, const Spacer(), ...trail]) : Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row(children: lead), Wrap(alignment: WrapAlignment.end, children: trail), ]), ); }