해결된 질문
작성
·
181
0
강의에서 배운대로 코드정리를 할때 궁금한게 생겼습니다.
강의 프로젝트들과 마찬가지로 최상단에는 StatefulWidget, 코드가 길어진다면
lesswidget으로 정리를 해준 후, 추후 관리하기 쉽게 상태코드들은 fulWidget으로 올리는 작업에서
만약 Listview와 같이 index도 필요로 할때에도 상단으로 올릴 수 있나요?
다음은 간단히 적어본 예시코드인데
아래와 같이 onTap()으로 뺄수있는지, 다른 코드정리방법이 있는지 궁금합니다.
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: _Body(
onTap: onTap,
),
),
);
}
onTap() {
showToast(context, index.toString()); // index ??
}
}
class _Body extends StatelessWidget {
final GestureTapCallback onTap;
const _Body({
required this.onTap,
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
List<int> list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
return ListView.separated(
itemBuilder: (_, index) {
return ListTile(
title: Text(
'${list[index]}',
style: const TextStyle(fontSize: 30),
),
onTap: () { // 상단으로 올리는게 가능한지
showToast(context, index.toString());
},
);
},
separatorBuilder: (_, index) {
return const SizedBox(
height: 20,
);
},
itemCount: list.length,
);
}
}
showToast(BuildContext context, String message) {
Fluttertoast.showToast(
msg: message,
toastLength: Toast.LENGTH_LONG,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
fontSize: 16.0,
textColor: Colors.blue,
backgroundColor: Colors.grey[200],
);
}
그럼 상태관련 로직이 있다면, 지금은 예시코드가 짧아서 상관없지만,
만약코드가 엄청 길어진다하더라도 _Body lesswidget으로 빼지말고
그냥 _HomeScreenState에다 작성해주는것이 좋다는말씀일까요?