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 about
images
。但是您试图在未声明它的函数中使用
索引
。代码现在没有给出错误,但仍然在模拟器中运行显示错误。现在呢?
RangeError(index):无效值:Val