late final 속성
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로 구현하니까 이런 현상이 생기네요..
답변 1
2
안녕하세요.
말씀해 주신 문제를 해결하는 두 가지 방법이 있습니다.
방법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





