250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 막내의막무가내 프로그래밍
- 프로그래머스 알고리즘
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 rxjava
- 막내의막무가내 코볼 COBOL
- 부스트코스
- 안드로이드 sunflower
- 프래그먼트
- 안드로이드
- 막내의 막무가내
- 막내의막무가내 플러터
- 막내의막무가내
- 막내의막무가내 안드로이드
- 막내의 막무가내 알고리즘
- 막내의막무가내 안드로이드 에러 해결
- 막무가내
- 2022년 6월 일상
- 막내의막무가내 플러터 flutter
- 막내의막무가내 목표 및 회고
- 주엽역 생활맥주
- 부스트코스에이스
- 막내의막무가내 코틀린
- 막내의막무가내 안드로이드 코틀린
- flutter network call
- 안드로이드 Sunflower 스터디
- 막내의막무가내 알고리즘
- 막내의막무가내 SQL
- Fragment
- 주택가 잠실새내
- 막내의막무가내 일상
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[Flutter] Hot Reload 시 null error 주의사항 본문
728x90
[에러내용]
A non-null String must be provided to a Text widget.
'package:flutter/src/widgets/text.dart':
Failed assertion: line 370 pos 10: 'data != null'
말그대로 null 에러가 났다. 근데 null 에러가 날 수가 없는 상황이고 앞에 null체크를 해줘도 같은 에러가 났다.
이걸로 삽질을 한거에 대해 포스팅을 한다. (별거아니지만 헿)
import 'package:bmi_calculator/components/bottom_button.dart';
import 'package:flutter/material.dart';
import '../components/reusable_card.dart';
import '../constants.dart';
class ResultsPage extends StatelessWidget {
final String bmiResult;
final String resultText;
final String interpretation;
ResultsPage(
{@required this.bmiResult,
@required this.resultText,
@required this.interpretation});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('BMI CALCULATOR'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(
child: Container(
padding: EdgeInsets.all(15.0),
alignment: Alignment.bottomLeft,
child: Text(
'Your Result',
style: kTitleTextStyle,
),
)),
Expanded(
flex: 5,
child: ReusableCard(
colour: kActiveCardColour,
cardChild: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(
resultText,
style: kResultTextStyle,
),
Text(
bmiResult,
style: kBMITextStyle,
),
Text(
interpretation,
style: kBodyTextStyle,
textAlign: TextAlign.center,
)
],
),
),
),
BottomButton(
onTap: () {
Navigator.pop(context);
},
buttonTitle: 'RE-CALCULATE')
],
),
);
}
}
BottomButton(
buttonTitle: 'CALCULATE',
onTap: () {
CalculatorBrain calc = CalculatorBrain(height: height, weight: weight);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ResultsPage(
bmiResult: calc.calculateBMI(),
resultText: calc.getResult(),
interpretation: calc.getInterpretation(),
)));
},
원인은 이 ResutsPage 위젯 이전에 InputPage에서 생성자를 위와 같이 넘겨주고
class ResultsPage extends StatelessWidget {
final String bmiResult;
final String resultText;
final String interpretation;
ResultsPage(
{@required this.bmiResult,
@required this.resultText,
@required this.interpretation});
children: <Widget>[
Text(
resultText,
style: kResultTextStyle,
),
Text(
bmiResult,
style: kBMITextStyle,
),
Text(
interpretation,
style: kBodyTextStyle,
textAlign: TextAlign.center,
)
ResultPage는 매개변수로 받은 값을 Text에 세팅해주는 로직을 추가로 구현하고 HotReload를 돌렸는데
ResultPage에서 HotReload 가 되어서 생성자로 값을 못받은 상태이므로 Text에 세팅할때 null 에러가 나는게 원인이었다.
HotReload 는 플러터에서 매우 좋은 기능이지만 단순 화면갱신말고 로직이 바뀔때는 재컴파일 시작을 해주는 습관도 필요할 것 같다.
728x90
'플러터(Flutter) & Dart' 카테고리의 다른 글
Comments