Null에 관련된 부분을 신경써야한다.
예를 들어 아래와 같은 코드가 있다고 했을 때
Align(
alignment: Alignment.center,
child: ChartSvg(
url: _marketMapNotifier.chartImageMap[
widget.tickerNotifier.ticker.currencyPair]!,
widthRatio: chartWidthRatio,
height: chartHeight,
color: getColor(),
)
),
_marketMapNotifier.chartImageMap에서 chartImageMap은 Map<currencyPair, String?>으로 선언되어 있다.
String?은 Null을 허용하고 있다.
그런데 위에 코드에서 아래와 같이 !느낌표를 사용해서 Null을 허용하지 않게 만들었다.
_marketMapNotifier.chartImageMap[widget.tickerNotifier.ticker.currencyPair]!,
그렇다보니 아래와 같은 에러가 뜬다.
════════ Exception caught by widgets library ═══════════════════════════════════
Null check operator used on a null value
The relevant error-causing widget was
널을 허용했는데 정작 view에서 사용하는 위젯에서는 null 허용을 하지 않겠다고 하니깐 뜨는 경우이다.
그래서 아래와 같이 처리를 했다.
Align(
alignment: Alignment.center,
child: _marketMapNotifier.chartImageMap[
widget.tickerNotifier.ticker.currencyPair] !=
null
? ChartSvg(
url: _marketMapNotifier.chartImageMap[
widget.tickerNotifier.ticker.currencyPair]!,
widthRatio: chartWidthRatio,
height: chartHeight,
color: getColor(),
)
: null,
),
Null check operator used on a null value 에러가 뜬다면 어디에서 ?을 사용했는데 !을 사용한 곳이 있는지
그리고 Null에 대한 관리를 데이터에서 받아오는 최초의 부분에서 클라이언트에서 보여지는 부분까지 잘 처리하고 있는지 확인해야한다.