인프런 커뮤니티 질문&답변
({this.movies}); 에서 movies가 에러나는 이유를 모르겠습니다 ㅠㅠ
작성
·
906
답변 10
3
아마도 이런 에러가 나타날 겁니다.
Non-nullable instance field 'movies' must be initialized.
Try adding an initializer expression, or a generative constructor that initializes it, or mark it 'late'.dart(not_initialized_non_nullable_instance_field)
Try adding an initializer expression, or a generative constructor that initializes it, or mark it 'late'.dart(not_initialized_non_nullable_instance_field)
List<Movie> movies
이는 이번에 플러터가 nullable 정책을 바꿔서 일어난 것으로
late List<Movie> movies;
이렇게 변경하면 됩니다.
1
initState 부분까지 입니다. 플러터가 null 값을 신경 많이 쓰네요 참고 바랍니다
import 'package:flutter/material.dart';
import 'package:fluuterandfirebase/model/model_movie.dart';
class CarouselImage extends StatefulWidget {
final List <Movie> ? movies;
CarouselImage({this.movies});
_CarouselImageState createState() => _CarouselImageState();
}
class _CarouselImageState extends State<CarouselImage> {
List<Movie> ? movies;
List<Widget> ? images;
List<String> ? keywords;
List<bool> ? likes;
int _currenetPage =0;
String ? _currentKeyword;
@override
void initState() {
super.initState();
movies = widget.movies;
images = movies?.map((e) => Image.asset(e.poster)).toList();
keywords = movies?.map((e) => e.keyword).toList();
likes = movies?.map((e) => e.like).toList();
_currentKeyword = keywords![0];
}
0
0
이렇게 사용하시면 됩니다.
class CarouselImage extends StatefulWidget {
final List<Movie> movies;
CarouselImage({required this.movies});
_CarouselImageState createState() => _CarouselImageState();
}
0
0
final List<Movie> movies; 이부분을
final dynamic movies 로 바꾸면 오류없이 잘됩니다^^
{this.movies} nullable 로 바뀌어요
나머지는 late 붙이면 됩니다
0
저도 잘 모르지만 null safety 때문이지 않나요? 저는
List<Movie>? movies;
List<Widget>? images;
이런식으로 값이 아직 안들어와있는 상태에서는 ? 이걸로 해주시거나
앞에 late 를 붙여주시면 될거같슴다.
this.movie또한
final List<Movie>? movies; 로 해주면 @requ를 하지않아도 에러는 사라집니다.
0
0
0





