[英]dart does not see the variable declared in the same file
Dart 沒有看到在同一文件中聲明的變量_movies
下面是小部件的代碼,它給出了唯一的錯誤:未定義的名稱“_movies”。 嘗試將名稱更正為已定義的名稱,或定義名稱。dart
import 'package:flutter/material.dart';
import '../../resources/resources.dart';
class Movie {
final String imageName;
final String title;
final String time;
final String description;
Movie({
required this.imageName,
required this.title,
required this.time,
required this.description,
});
}
class MovieListWidget extends StatefulWidget {
final _movies = [
Movie(
imageName: AppImages.moviePlacholder,
title: 'TOP GUN',
time: 'April 7, 2021',
description:
'Fhjshfkhfdkhskjhkjsdhfkjsdhfjhsdfkjhsdkjfhskjdhfkjsdhfjsdhfkjhsdfjhsdkjfhskhdfksdhfkjdshfkjhsdkjfhskjdfhskjdhfkjshdfkjhsdkjfhskjdfhksjhfjdhgfkjshgkjdhjghfjksdhkjgfdhgjkhdgkjhdskghsfjghsdfhgairhe')
];
MovieListWidget({super.key});
@override
State<MovieListWidget> createState() => _MovieListWidgetState();
}
class _MovieListWidgetState extends State<MovieListWidget> {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: _movies,
itemExtent: 163,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
child: Stack(
children: [
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: const BorderRadius.all(Radius.circular(10)),
border: Border.all(color: Colors.black.withOpacity(0.2)),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.1),
blurRadius: 8,
offset: const Offset(2, 2)),
]),
clipBehavior: Clip.hardEdge,
child: Row(
children: [
const Image(image: AssetImage(AppImages.moviePlacholder)),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
SizedBox(height: 20),
Text(
'Top Gun',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontWeight: FontWeight.bold),
),
SizedBox(height: 5),
Text(
'April 7, 2021',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(color: Colors.grey),
),
SizedBox(height: 20),
Text(
'Fhjshfkhfdkhskjhkjsdhfkjsdhfjhsdfkjhsdkjfhskjdhfkjsdhfjsdhfkjhsdfjhsdkjfhskhdfksdhfkjdshfkjhsdkjfhskjdfhskjdhfkjshdfkjhsdkjfhskjdfhksjhfjdhgfkjshgkjdhjghfjksdhkjgfdhgjkhdgkjhdskghsfjghsdfhgairhe;uhufghrhglkzhglkzhlk/hzionvonrb;jhkjhfjkshdfjhjhsjhdfkjshdfjhdjfhskfskd;ljgkjfslkfhklsdhkjvhkjbgnivbfjdhdujfkxjhfjilzxhfjklxhflkjhznriouvboiurzb;ogjoijzgoizhdfoghzoikjshfkjshdfjshfshdkj',
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
],
),
),
)
],
),
),
Material(
color: Colors.transparent,
child: InkWell(
borderRadius: BorderRadius.circular(10),
onTap: () {
debugPrint('URURURURU');
},
),
)
],
),
);
});
}
}
我不明白為什么會這樣,也許是由於語言或框架的新規則
_movies
是 widget class 屬性,要在 state class 上訪問它,需要使用widget.variableName
return ListView.builder(
itemCount: widget._movies.length,
像這樣訪問它,
widget.movies
因為它在MovieListWidget
里面。
如果它在_MovieListWidgetState
內,您可以正常訪問movies
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.