From 2e825bbae2a73407edc461ce0d9fb3548b4313df Mon Sep 17 00:00:00 2001 From: girinb Date: Mon, 14 Jul 2025 16:28:11 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8A=A4=ED=81=AC=EB=A1=A4=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/plan_page_detail.dart | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/plan_page_detail.dart b/lib/plan_page_detail.dart index b6b6788..15540e7 100644 --- a/lib/plan_page_detail.dart +++ b/lib/plan_page_detail.dart @@ -51,6 +51,7 @@ class _PlanPageDetailState extends State { late int _currentBottomNavIndex; String? _selectedYoutubeUrl; PlanDetailItem? _selectedItem; // <<< 선택된 아이템을 저장할 변수 추가 + final ScrollController _scrollController = ScrollController(); // 스크롤 컨트롤러 추가 @override void initState() { @@ -124,6 +125,12 @@ class _PlanPageDetailState extends State { ); } + @override + void dispose() { + _scrollController.dispose(); // 스크롤 컨트롤러 해제 + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -191,6 +198,7 @@ class _PlanPageDetailState extends State { final item = details[index]; return GestureDetector( onTap: () { + _scrollController.jumpTo(0); // 스크롤 맨 위로 이동 setState(() { _selectedItem = item; if (item.lessonUrl.isNotEmpty && @@ -292,6 +300,7 @@ class _PlanPageDetailState extends State { ), Expanded( child: SingleChildScrollView( + controller: _scrollController, // 스크롤 컨트롤러 연결 padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -337,7 +346,7 @@ class _PlanPageDetailState extends State { ), ), IconButton( - icon: const Icon(Icons.play_circle_fill, size: 40, color: Colors.red), + icon: const Icon(Icons.play_circle_fill, size: 40, color: Colors.blue), onPressed: () { if (_selectedYoutubeUrl != null && _selectedYoutubeUrl!.isNotEmpty) { Navigator.push(