inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter 앱 개발 실전

CartBottomSheet

late final 속성

해결된 질문

97

유하

작성한 질문수 36

1

part 'theme_color.dart';
part 'theme_deco.dart';
part 'theme_typo.dart';

abstract class ThemeCore{
  late final Brightness theme;
  late final ThemeColor color;
  late final ThemeDeco deco;
  late final ThemeTypo typo;

}

코드를 복사해서 클래스 이름만 바꿔서 붙여 넣었습니다

import 'package:custom_house/theme/foundation/theme_core.dart';
import 'package:custom_house/theme/res/base_typo.dart';
import 'package:custom_house/theme/res/palette.dart';
import 'package:flutter/material.dart';

class LightTheme implements ThemeCore {
  @override
  Brightness brightness = Brightness.light;

  @override
  ThemeColor color = ThemeColor(
    surface: Palette.grey100,
    background: Palette.black.withOpacity(0.55),
    text: Palette.black,
    subtext: Palette.grey700,
    toastContainer: Palette.black.withOpacity(0.85),
    onToastContainer: Palette.grey100,
    hint: Palette.grey300,
    hintContainer: Palette.grey150,
    onHintContainer: Palette.grey500,
    inactive: Palette.grey400,
    inactiveContainer: Palette.grey250,
    onInactiveContainer: Palette.white,
    primary: Palette.green,
    onPrimary: Palette.white,
    secondary: Palette.red,
    onSecondary: Palette.white,
    tertiary: Palette.yellow,
    onTertiary: Palette.white,
  );

  @override
  late ThemeTypo typo = ThemeTypo(
    typo: const NotoSans(),
    fontColor: color.text,
  );

  @override
  ThemeDeco deco = ThemeDeco(
    shadow: [
      BoxShadow(
        color: Palette.black.withOpacity(0.1),
        blurRadius: 35,
      ),
    ],
  );
}

이렇구요

 

기존 아래와 같은 코드에서

  @override
  Brightness brightness = Brightness.light;

다음과 같이 바꿔봤는데

  @override
  late final Brightness brightness = Brightness.light;

에러가 나는데 이해가 되지 않습니다.

어차피 나중에 초기화를 해도 되니까 late를 붙인거고 , 밝다라는 속성은 바꾸지 않을 거니까 final 키워드까지 썼는데
에러가 나는 이유를 모르겠습니다. implements로 구현하니까 이런 현상이 생기네요..

 

 

 

flutter

답변 1

2

DevStory

안녕하세요.

말씀해 주신 문제를 해결하는 두 가지 방법이 있습니다.

방법1. AppTheme 클래스의 brightness를 Getter 함수로 변경한다.

abstract interface class AppTheme {
  Brightness get brightness;
  late final AppColor color;
  late final AppDeco deco;
  late final AppTypo typo;
}

방법2. LightTheme 클래스의 생성자를 통해서 brightness의 초기값을 전달한다.

class LightTheme implements AppTheme {
  LightTheme({this.brightness = Brightness.light});

  @override
  late final Brightness brightness;

또는

class LightTheme implements AppTheme {
  LightTheme() : brightness = Brightness.light;

  @override
  late final Brightness brightness;

위와 같은 방법으로 처리를 해야하는 근거는 링크에서 확인하실 수 있는데, Dart 언어 스팩이 이렇게 구현되어 있다고 이해하시면 될 것 같습니다.

 

감사합니다 :)

수강 기한 연장 요청드려도될까요..

1

48

2

37.provider 실습 문제점, 카트에서 상품이 지워지지 않습니다.

1

75

2

다트 프로젝트

1

51

2

context.read<LangService>().toggleLang 해도 언어가 변경되는 이유

1

74

3

수강 기간 연장 신청 요청드립니다.

1

68

3

수강기간 연장 부탁드립니다.

1

58

3

제공해주신 flutter_design_system 라이브러리 질문입니다.

1

53

2

수강 기간 연장 부탁드립니다

1

52

2

수강 기한 연장

1

78

3

강의 잘 보고있습니다!

1

59

2

애뮬레이터 실행 오류

1

69

2

pdf 강의노트

1

62

2

수강기간 연장 부탁드립니다.

1

86

2

수강 기간 연장 요청

1

86

2

수강기간 연장 부탁드립니다

1

129

2

코드 생성기 - build runner 관련 오류

1

110

1

디자인 시스템 구성에 대해 질문 드립니다

2

145

2

CartItem 추가시

1

95

2

const 커스텀클래스

1

95

1

강의 수강 기간 연장 요청드립니다.

1

127

2

코드 생성기 - 실습 build runner 안 되는 분.

1

270

2

Flutter 강의자료 열리지 않는 문제

1

165

2

riverpod 프로젝트에 궁금한점이 있어 질문 남깁니다.

1

123

2

수강 기강 연장 부탁드리겠습니다! :ㅇ

1

88

2