type 'Null' is not a subtype of type 'Widget' in type cast
type 'Null' is not a subtype of type 'Widget' in type cast
Flutter를 다운그레이드하지 마세요.
문제:
!
이 오류는 초기화되지 않은 nullable 인스턴스에 bang 연산자( )를 사용할 때 발생합니다 .
예를 들어:
String? string; // Nullable String
void main() {
var len = string!.length; // Runtime error: Null check operator used on a null value
}
솔루션:
로그를 열면 오류가 발생한 프로젝트의 파일을 가리키는 줄이 있어야 합니다.
null 값에 사용되는 null 검사 연산자
#0 메인 (package:example/main.dart:22:16)
거기에 있으면 다음 방법 중 하나를 사용하여 문제를 해결할 수 있습니다.
지역 변수 사용
var s = string; if (s != null) { var len = s.length; // Safe }
사용
?.
및 ??var len = string?.length ?? 0; // Provide a default value if string was null.
스택 추적은 프로젝트에 속하지 않는 파일을 가리킬 수도 있습니다. 예를 들어:
1. 이용 Navigator
하시거나MediaQuery
이 오류는 에 비동기적으로 액세스하려고 할 때도 발생합니다 BuildContext
.
mounted
따라서 에 접근하기 전에 위젯이 있는지 먼저 확인해야 합니다 BuildContext
.
Future<void> foo() async {
// Some async operation
await compute();
// Check `mounted` before accessing 'context'.
if (mounted) {
MediaQuery.of(context).size;
Navigator.of(context).pop();
}
}
2. 이용하시는 분Color
사용 중
Colors.blueAccent.shade50
50
그늘이 없습니다 . 소스 코드를 살펴보면 다음을 찾을 수 있습니다.
Color get shade50 => this[50]!; // <-- This bang operator is causing the error.
null
이 오류를 해결하려면 다음 음영 이 아닌 다른 색상을 사용해야 합니다 100
.
Colors.blueAccent[100]
// or
Colors.blue.shade100
FutureBuilder
3. /를 사용하시는 분들께 StreamBuilder
:
두 가지 방법으로 오류를 해결할 수 있습니다.
FutureBuilder
/ 에 유형을 지정하십시오.StreamBuilder
FutureBuilder<List<int>>( // <-- type 'List<int>' is specified. future: _listOfInt(), builder: (_, snapshot) { if (snapshot.hasData) { List<int> myList = snapshot.data!; // <-- Your data } return Container(); }, )
유형으로
as
다운캐스팅하는 데 사용합니다 (예: a 또는 ).Object
List
Map
FutureBuilder( future: _listOfInt(), builder: (_, snapshot) { if (snapshot.hasData) { var myList = snapshot.data! as List<int>; // <-- Your data using 'as' } return Container(); },
해결
문제는 null 값을 강제로 as
문자열 유형으로 변환하는 것이었습니다. 귀하의 모델 클래스는 null 값을 허용하지 않지만 null 경우에 기본값을 제공하고 있습니다
List<Item> introItems = [
new Item(
'로그인',
'/login',
null ,
),
new Item(
'회원가입',
'/join',
null ,
),
new Item(
'이지장부 소개',
'/infoEasyJanbu',
null as Widget,
),
List<Item> introItems = [
new Item(
'로그인',
'/login',
null ,
),
new Item(
'회원가입',
'/join',
null ,
),
new Item(
'이지장부 소개',
'/infoEasyJanbu',
null ,
),
댓글
댓글 쓰기