[flutter] 위젯 속성값 변경 도와주는 copyWith()

dev-nam 2022. 4. 10. 13:14

플러터 위젯 속성값 변경을 도와주는 copyWith()

위젯을 커스텀하다 보면 변경하고 싶은 속성값은 1개뿐인데, 모든 속성값을 입력하지 않았다며... 필수 속성값을 입력하라는 오류를 경험해보신 적 있을 거예요. 특히 themeData와 같이 필수 속성값이 여러 개인 위젯을 사용할 때 많이 번거로웠습니다.

 

이러한 불편은 copyWith() 함수를 사용하면 해결할 수 있습니다. 위젯의 기존 속성값은 그대로 사용하면서 변경하려는 속성값의 코드만 작성하면 되도록 도와주거든요.

 

샘플 코드

class TitleColorThemeCopy extends StatelessWidget {
  const TitleColorThemeCopy({Key? key, required this.child, required this.titleColor}) : super(key: key);

  final Color titleColor;
  final Widget child;

  @override
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    return Theme(
      data: theme.copyWith(
        textTheme: theme.textTheme.copyWith(
          titleLarge: theme.textTheme.titleLarge!.copyWith(  // copyWith
            color: titleColor,
          ), 
        ),
      ),
      child: child,
    );
  }
}

 

코드와 관련해서 궁금하게 있으시다면 댓글 남겨주세요~😊

 

반응형

'주제 > flutter' 카테고리의 다른 글

[flutter] 리스트 스크롤 적용하기  (0) 2022.04.10
[flutter] ListView builder, separated widget  (0) 2022.04.10
[flutter] cached_network_image package  (0) 2022.04.09
[flutter] 앱 테마 설정하기  (0) 2022.04.03
[flutter] Class.fromMap  (0) 2022.03.20