dart - 访问范围外的变量

标签 dart flutter

我正在尝试导航到新页面 newData[index]["title"] 当点击 listTile 时,我知道如何访问此范围之外的 newData、索引和数据变量,我知道我必须在全局范围内声明它们,但我尝试了 this.index,但它不起作用,我创建了一个 _onTap() 方法,但我无权访问索引,所以我只能通过询问特定位置来访问[0] 例如。

class _ContentPageState extends State<ContentPage> {

@override
Widget build(BuildContext context,) {
 List data;
 return new Scaffold(
    appBar: new AppBar(
      title: new Text("Local json file"),
    ),
    body: new Container(
      child: new Center(

        child: new FutureBuilder(
            future: DefaultAssetBundle
                .of(context)
                .loadString('data_files/file.json'),
            builder: (context, snapshot) {
              var newData = JSON.decode(snapshot.data.toString());
              return new ListView.builder(
                itemBuilder: (BuildContext context, int index) {
                  return new Card(
                    child: new ListTile(
                      title: new Text(newData[index]['title'],textScaleFactor: 1.5),
                    ),
                  );
                },
                itemCount: newData == null ? 0 : newData.length,
              );
            }),
      ),
    ));
   }
 }

最佳答案

我猜你想在你的类中有一个私有(private)的 _onTap 方法类似于:

_onTap(newData, int index) {

}

这很简单,在您的 ListTile 中,您可以将 _onTap 包装在另一个函数中,如下所示:

return new Card(
  child: new ListTile(
    onTap: () => _onTap(newData, index),
    title: new Text(newData[index]['title'], textScaleFactor: 1.5),
  ),
);

关于dart - 访问范围外的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49099974/

相关文章:

Flutter - 滚动时如何使一行停留在屏幕顶部

flutter - 要在单击按钮时显示AlertDialog,在“按下的方法”上显示错误。 (未定义名称 'context'。)

animation - 带有动画的 Flutter 剪辑 PNG

dart - flutter:带有后备文本的 CircleAvatar

flutter - 如何在 flutter 二维码扫描仪中添加捏合缩放功能?

flutter - 未为静态变量和类中声明的方法定义 Getter

dart - 如何在 flutter 中移动边框

android-studio - 拆分小部件,如何将其他小部件中的信息添加到主小部件中?

flutter - 如何通过共享的首选项将初始值设置为文本字段

flutter - 如何禁用 Flutter slider 类以防止用户移动它?