인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

dlckdals9467님의 프로필 이미지
dlckdals9467

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

Pagination 이론

BottomNavigationBar 질문

작성

·

166

0

검색 방법이 잘못된건지 모르지만 구글에 검색해도 해결법이 나오지않아 질문 올립니다.

 

bottomNavagtionBar:
  GestureDetector(
    onTap: (){
      Navigator.push(context, MaterialPageRoute(builder: (context) => CommentRegisterScreen( id: widget.id)));
    },
    child: TRoundedContainer(
      height: 60,
      backgroundColor: const Color(0xffF8F8FA),
      padding: const EdgeInsets.all(TSizes.defalutSpace),
      radius: 0,
    child: Text(
      '댓글을 남겨보세요.',
      style: Theme.of(context).textTheme.bodyMedium!.copyWith(color: Colors.grey),
    ),
          ),
  ),
child: SingleChildScrollView(
  child: Padding(
    padding: const EdgeInsets.all(TSizes.defalutSpace),
    child: Column(
      children: [
        const SizedBox(height: TSizes.spaceBtwItems),
        SizedBox(
          height: MediaQuery.of(context).size.height,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.start,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Expanded(
              child: PaginationListViewV2(
                  model: state,
                  id: widget.id,
                  provider: commentProvider(widget.id),
                  itemBuilder: <Comment>(_,index,comment){
                    if(index == 0){
                      return Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          /// 제목
                          Text(state.title, style: Theme.of(context).textTheme.headlineMedium),

                          const SizedBox(height: TSizes.spaceBtwItems),

                          /// 닉네임
                          Row(
                            crossAxisAlignment: CrossAxisAlignment.center,
                            children: [
                              const TRoundedImage(
                                width: 24,
                                height: 24,
                                fit: BoxFit.fill,
                                imageUrl: 'asset/img/no_image.png',
                                borderRadius: 100,
                              ),
                              const SizedBox(width: TSizes.sm),
                              Column(
                                crossAxisAlignment: CrossAxisAlignment.start,
                                children: [
                                  Text(
                                    state.creator,
                                    style: Theme.of(context).textTheme.bodyLarge,
                                  ),
                                ],
                              ),
                            ],
                          ),

                          const SizedBox(height: TSizes.spaceBtwItems),

                          /// 날짜, 좋아요
                          Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: [
                              Text(
                                state.createDate.split("T")[0],
                                style: Theme.of(context).textTheme.bodyMedium!.copyWith(color: Colors.grey),
                              ),
                              GestureDetector(

                                onTap: button.disable==false ? () async {

                                  //버튼 비활성화
                                  await button.change();

                                  await check == -1
                                     ? ref.read(communityProvider.notifier).clickFavorite(widget.id)
                                     : ref.read(communityProvider.notifier).downFavorite(widget.id);
                                  await ref.read(favoriteProvider.notifier).updateFavorites(widget.id);
                                  //버튼 활성화
                                  await button.change();


                                } : null,
                                child: check == -1
                                    ? TRoundedContainer(
                                  showBorder: true,
                                  padding: const EdgeInsets.all(TSizes.sm),
                                  borderColor: Colors.redAccent,
                                  radius: 10,
                                  child: Row(
                                    crossAxisAlignment: CrossAxisAlignment.center,
                                    children: [
                                      Text(
                                        '좋아요',
                                        style: Theme.of(context).textTheme.labelMedium!.copyWith(color: Colors.redAccent),
                                      ),
                                      const SizedBox(width: TSizes.xs),
                                      Text(
                                        state.favorite.toString(),
                                        style: Theme.of(context).textTheme.labelMedium!.copyWith(color: Colors.redAccent),
                                      ),
                                    ],
                                  ),
                                )
                                    : TRoundedContainer(
                                  padding: const EdgeInsets.all(TSizes.sm),
                                  backgroundColor: Colors.redAccent,
                                  radius: 10,
                                  child: Row(
                                    crossAxisAlignment: CrossAxisAlignment.center,
                                    children: [

                                child: SizedBox(
                                  height: 120,
                                  child: ListView.separated(
                                    shrinkWrap: true,
                                    scrollDirection: Axis.horizontal,
                                    itemCount: imgs.length,
                                    separatorBuilder: (_, __) {
                                      return const SizedBox(width: TSizes.spaceBtwItems / 2);
                                    },
                                    itemBuilder: (_, int index) {
                                      return TRoundedImage(
                                        imageUrl: imgs[index].toString().trim(),
                                        width: 120,
                                        height: 120,
                                        fit: BoxFit.fill,
                                        borderRadius: 12.0,
                                        isNetworkImage: true,
                                      );
                                    },
                                  ),
                                ),
                              ),
                            ],
                          )
                              : const SizedBox(),

                          const SizedBox(height: TSizes.spaceBtwSections),

                          /// 글 내용
                          Text(
                            state.content.trim(),
                            style: Theme.of(context).textTheme.bodyMedium!.copyWith(height: 1.5),
                          ),

                          /// 댓글 0이 아닐 경우
                          Row(
                            children: [
                              Text('댓글', style: Theme.of(context).textTheme.bodySmall),
                              const SizedBox(width: TSizes.spaceBtwItems / 2),
                              Text(state.commentCnt.toString(), style: Theme.of(context).textTheme.bodySmall),
                            ],
                          ),

                          const SizedBox(height: TSizes.spaceBtwItems),

                          CommentCard(
                              comment:comment,
                              recomments:comment.commentList,
                              board_id: widget.id
                          )
                        ],
                      );
                    }
                    return CommentCard(
                        comment:comment,
                        recomments:comment.commentList,
                        board_id: widget.id
                    );
                  }),
            ),
            Container(
              height: 210
            )
            ]
          ),
        ),

        // Center(child: Text('첫 댓글을 남겨주세요.', style: Theme.of(context).textTheme.bodySmall)),
      ],
    ),
  ),
),

위 코드와 같이 BottomNavigationBar와 SinglechildScrollView를 같이 사용하고 있습니다. 가장 하단의

Container(
  height: 210
)

위 코드를 넣어주지 않을 시 화면 스크롤이 모두 안되고 짤리는 현상이 발생합니다. 혹시 이러한 경험이 있어 해결방법이 있다면 알려주시면 감사하겠습니다.

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

어디서 문제가 생기는지 파악을 먼저 해보셔야 될 것 같습니다.

문제점을 isolate하지않고 코드를 통째로 던져주시면 파악할 방법이 없습니다.

감사합니다!

dlckdals9467님의 프로필 이미지
dlckdals9467

작성한 질문수

질문하기