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

FutureBuilder3. /를 사용하시는 분들께 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 또는 ).ObjectListMap

    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 ,
),

댓글

이 블로그의 인기 게시물

자바 string 비교 할때 equlas 를 사용하자

jqgrid 에서 export execl 붙이기

flutter webview scroll 안되는 경우 gestureRecognizers: gestureRecognizers, 추가 해서 되었다