안녕하세요 코드정리에 대해서 질문이 있습니다.
강의에서 배운대로 코드정리를 할때 궁금한게 생겼습니다.
강의 프로젝트들과 마찬가지로 최상단에는 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],
);
}
답변 1
0
네 가능합니다.
방법은 여러가지가 될텐데
가장 추천드리는 방법은 상태를 최상위에서 관리하시면 쉽습니다. (_HomeScreenState에서)
상태의 흐름은 항상 위에서 아래로 흐르도록 관리해주세요!
0
그럼 상태관련 로직이 있다면, 지금은 예시코드가 짧아서 상관없지만,
만약코드가 엄청 길어진다하더라도 _Body lesswidget으로 빼지말고
그냥 _HomeScreenState에다 작성해주는것이 좋다는말씀일까요?
LocationPermission.denied관련 질문입니다
0
588
1
videocontrollor dispose
0
432
1
onlogotap함수의 video nullable관련질문
0
391
1
setState 사용 차이
1
445
1
블로그 웹앱 배포 방법
0
509
1
sizedbox 위젯에 primary = RED_COLOR
1
434
1
개념 강의 순서 질문
0
409
1
materialstateProperty 다른 메소드관련질문
0
416
1
내 노트 모아보기
0
502
1
SafeArea (iPhone, Android)
0
408
1
web view 실행 안됩니다.
0
408
1
랜덤 숫자 생성기 프로젝트 관련
0
539
2
안도르이드 애뮬레이터 질문
0
384
1
super를 사용하는 건, 부모와 자식 클래스의 파라미터 이름이 꼭 같아야하나요?
0
475
1
선생님 flutter device를 크롬으로 했을때 http 통신이 안됩니다..
0
783
1
no element
0
442
1
암호화
0
236
1
책과 강의
0
387
1
voidcallback함수와 클래스내에 변수선언에 관한질문
0
476
1
android studio 세팅
0
482
1
오늘도 출근 세팅하기
2
563
1
재사용 클래스 임폴트 방법
0
483
1
가상화를 못하는 CPU인건가요? 확인 부탁드립니다.
0
400
1
flutter dispose 관련
0
1390
2





