Flutter 代码中有错误,BuildContext在Flatter中
我正在用不同的构建方法制作一个应用程序,这样我就可以在点击“爱心”按钮时在另一个屏幕上创建一个项目列表来保存它们。但是我在代码中遇到了错误。我正在跟踪调查。 我的代码:Flutter 代码中有错误,BuildContext在Flatter中,flutter,dart,Flutter,Dart,我正在用不同的构建方法制作一个应用程序,这样我就可以在点击“爱心”按钮时在另一个屏幕上创建一个项目列表来保存它们。但是我在代码中遇到了错误。我正在跟踪调查。 我的代码: import 'package:aioapp2/lists.dart'; import 'package:flutter/material.dart'; class _FavoriteListState extends State<FavoriteList> { final _suggestions = [];
import 'package:aioapp2/lists.dart';
import 'package:flutter/material.dart';
class _FavoriteListState extends State<FavoriteList> {
final _suggestions = [];
final Set<Widget> _saved = Set<Widget>();
Widget _buildList() {
return ListView.builder(
itemCount: 53,
itemBuilder: (BuildContext context, int index) {
return _buildRow(_suggestions[index]);
},
);
}
Widget _buildRow(Widget website){
final bool alreadySaved = _saved.contains(website);
return Card(
child: Container(
child: ListTile(
contentPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
subtitle: Row(
children: <Widget>[
// Image.asset('lib/images/${images[index]}'),
],
),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _buildList(),
);
}
}
class FavoriteList extends StatefulWidget {
@override
_FavoriteListState createState() => _FavoriteListState();
}
import'包:aioapp2/lists.dart';
进口“包装:颤振/材料.省道”;
类\u FavoriteListState扩展状态{
最终建议=[];
最终集_saved=Set();
小部件_buildList(){
返回ListView.builder(
物品计数:53,
itemBuilder:(构建上下文,int索引){
返回_buildRow(_建议[索引]);
},
);
}
Widget\u buildRow(Widget网站){
最终bool alreadySaved=_saved.contains(网站);
回程卡(
子:容器(
孩子:ListTile(
内容填充:边集。对称(水平:20,垂直:10),
字幕:世界其他地区(
儿童:[
//资产('lib/images/${images[index]}'),
],
),
),
),
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:_buildList(),
);
}
}
类FavoriteList扩展了StatefulWidget{
@凌驾
_FavoriteListState createState()=>\u FavoriteListState();
}
我面临的错误在Image.asset()行中。在键入下一行时,“索引”下显示红线。但它不应该,这就是问题所在!有什么帮助吗?您正试图从
\u buildRow
方法中引用变量index
,但该变量不存在。看看这段代码摘录
Widget\u buildList(){
返回ListView.builder(
物品计数:53,
itemBuilder:(BuildContext context,int index){/您正试图从\u buildRow
方法中引用变量index
,但该变量不存在。请查看此代码摘录
Widget\u buildList(){
返回ListView.builder(
物品计数:53,
itemBuilder:(BuildContext,int index){/像这样尝试一个简单的解决方法:
import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(
home: FavoriteList(),
)
);
class _FavoriteListState extends State<FavoriteList> {
final _suggestions = [{
'image' : 'ic_play.png'
},
{
'image' : 'ic_play.png'
},
{
'image' : 'ic_play.png'
},
{
'image' : 'ic_play.png'
}
];
final Set<Widget> _saved = Set<Widget>();
Widget _buildList() {
return ListView.builder(
itemCount: _suggestions.length,
itemBuilder: (BuildContext context, int index) {
return _buildRow(_suggestions[index]);
},
);
}
Widget _buildRow(dynamic website){
return Card(
child: Container(
child: ListTile(
contentPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
subtitle: Row(
children: <Widget>[
Image.asset('assets/images/${website['image']}'),
],
),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _buildList(),
);
}
}
class FavoriteList extends StatefulWidget {
@override
_FavoriteListState createState() => _FavoriteListState();
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(
材料聚丙烯(
主页:收藏夹列表(),
)
);
类\u FavoriteListState扩展状态{
最终建议=[{
“image”:“ic_play.png”
},
{
“image”:“ic_play.png”
},
{
“image”:“ic_play.png”
},
{
“image”:“ic_play.png”
}
];
最终集_saved=Set();
小部件_buildList(){
返回ListView.builder(
itemCount:_.length,
itemBuilder:(构建上下文,int索引){
返回_buildRow(_建议[索引]);
},
);
}
Widget\u buildRow(动态网站){
回程卡(
子:容器(
孩子:ListTile(
内容填充:边集。对称(水平:20,垂直:10),
字幕:世界其他地区(
儿童:[
Image.asset('assets/images/${website['Image']}'),
],
),
),
),
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:_buildList(),
);
}
}
类FavoriteList扩展了StatefulWidget{
@凌驾
_FavoriteListState createState()=>\u FavoriteListState();
}
像这样尝试一个简单的解决方法:
import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(
home: FavoriteList(),
)
);
class _FavoriteListState extends State<FavoriteList> {
final _suggestions = [{
'image' : 'ic_play.png'
},
{
'image' : 'ic_play.png'
},
{
'image' : 'ic_play.png'
},
{
'image' : 'ic_play.png'
}
];
final Set<Widget> _saved = Set<Widget>();
Widget _buildList() {
return ListView.builder(
itemCount: _suggestions.length,
itemBuilder: (BuildContext context, int index) {
return _buildRow(_suggestions[index]);
},
);
}
Widget _buildRow(dynamic website){
return Card(
child: Container(
child: ListTile(
contentPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
subtitle: Row(
children: <Widget>[
Image.asset('assets/images/${website['image']}'),
],
),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _buildList(),
);
}
}
class FavoriteList extends StatefulWidget {
@override
_FavoriteListState createState() => _FavoriteListState();
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(
材料聚丙烯(
主页:收藏夹列表(),
)
);
类\u FavoriteListState扩展状态{
最终建议=[{
“image”:“ic_play.png”
},
{
“image”:“ic_play.png”
},
{
“image”:“ic_play.png”
},
{
“image”:“ic_play.png”
}
];
最终集_saved=Set();
小部件_buildList(){
返回ListView.builder(
itemCount:_.length,
itemBuilder:(构建上下文,int索引){
返回_buildRow(_建议[索引]);
},
);
}
Widget\u buildRow(动态网站){
回程卡(
子:容器(
孩子:ListTile(
内容填充:边集。对称(水平:20,垂直:10),
字幕:世界其他地区(
儿童:[
Image.asset('assets/images/${website['Image']}'),
],
),
),
),
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:_buildList(),
);
}
}
类FavoriteList扩展了StatefulWidget{
@凌驾
_FavoriteListState createState()=>\u FavoriteListState();
}
不应该
Image.asset('lib/images/${images[index]}'),
像
Image.asset('lib/images/${index}.png'), // Provide you have 0.png, 1.png .... in lib folder
或者你应该有一个字符串数组,比如
String[] images=["1.png","2.png"];
=====
我看不到您希望在注释代码中引用的任何可变图像。不应
Image.asset('lib/images/${images[index]}'),
像
Image.asset('lib/images/${index}.png'), // Provide you have 0.png, 1.png .... in lib folder
或者你应该有一个字符串数组,比如
String[] images=["1.png","2.png"];
=====
我看不到您希望在注释代码中引用的任何变量图像。错误在哪里?您没有提到您面临的问题抱歉,我不知道我是如何错过的,我找不到图像和索引在\u buildRow
函数中声明的变量。您需要将索引传递给widget函数I访问index
不是一个变量,images
是一个列表。实际上,我想将我的图像列表迭代到listview索引中,明智地忽略images
。但是您试图在未声明的函数中使用index
。错误在哪里?您没有提到您面临的问题我不知道我是怎么错过的,我找不到在你的\u buildRow
函数中声明的图像
和索引
变量。你需要将索引传递给小部件函数,以便访问索引
不是一个变量,图像
是一个列表。我实际上想将我的图像列表迭代到列表中查看索引wiseignore aboutimages
。但是您试图在未声明它的函数中使用索引
。代码现在没有给出错误,但仍然在模拟器中运行显示错误。现在呢?RangeError(index):无效值:Val