Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何引用列表<&燃气轮机;在类中创建的对象?_List_Flutter_Dart_Parameter Passing - Fatal编程技术网

List 如何引用列表<&燃气轮机;在类中创建的对象?

List 如何引用列表<&燃气轮机;在类中创建的对象?,list,flutter,dart,parameter-passing,List,Flutter,Dart,Parameter Passing,我的颤振应用程序中有两个单独的文件,main.dart和class1.dart class1.dart在“我的模型/文件夹”中定义 我正在尝试访问从SampleWidget类创建的列表,但我不确定如何执行此操作。IntelliSense无法找到我从SampleWidget的实例对象创建的列表 我想要实现的是: AssetImage(SampleWidget.listSampleWidget[0].foo) 1.飞镖 class SampleWidget { final String foo;

我的颤振应用程序中有两个单独的文件,main.dart和class1.dart

class1.dart在“我的模型/文件夹”中定义

我正在尝试访问从SampleWidget类创建的列表,但我不确定如何执行此操作。IntelliSense无法找到我从SampleWidget的实例对象创建的列表

我想要实现的是:

AssetImage(SampleWidget.listSampleWidget[0].foo)

1.飞镖

class SampleWidget {
  final String foo;
  final int bar;

  SampleWidget({this.foo, this.bar});
}

List<SampleWidget> listSampleWidget = [
  SampleWidget(
    foo: 'assets/001.png',
    bar: 420,
  ),
];
import 'package:flutter/material.dart';
import 'package:sandbox1/models/class1.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(

        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final extSampleClass = SampleWidget();
  int _counter = 0;

  void _incrementCounter() {
    setState(() {

      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(

        title: Text(widget.title),
      ),
      body: Center(

        child: Column(

          // horizontal).
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
            //AssetImage(<pass SampleWidget foo parameter from the List here>),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

classsamplewidget{
最终字符串foo;
最终整型条;
SampleWidget({this.foo,this.bar});
}
列表listSampleWidget=[
样本小部件(
foo:'assets/001.png',
酒吧:420,
),
];
main.dart只是创建新颤振应用程序时的默认样板代码

main.dart

class SampleWidget {
  final String foo;
  final int bar;

  SampleWidget({this.foo, this.bar});
}

List<SampleWidget> listSampleWidget = [
  SampleWidget(
    foo: 'assets/001.png',
    bar: 420,
  ),
];
import 'package:flutter/material.dart';
import 'package:sandbox1/models/class1.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(

        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final extSampleClass = SampleWidget();
  int _counter = 0;

  void _incrementCounter() {
    setState(() {

      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(

        title: Text(widget.title),
      ),
      body: Center(

        child: Column(

          // horizontal).
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
            //AssetImage(<pass SampleWidget foo parameter from the List here>),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

导入“包装:颤振/材料.省道”;
导入“包:沙盒1/models/class1.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
最终extSampleClass=SampleWidget();
int _计数器=0;
void _incrementCounter(){
设置状态(){
_计数器++;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子:列(
//水平)。
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
正文(
“您已经按了这么多次按钮:”,
),
正文(
“$”计数器“,
风格:Theme.of(context).textTheme.headline4,
),
//AssetImage(),
],
),
),
浮动操作按钮:浮动操作按钮(
按下时:\ u递增计数器,
工具提示:“增量”,
子:图标(Icons.add),
),//此尾随逗号使生成方法的自动格式设置更方便。
);
}
}
我如何在这里引用课堂上的列表?这样的事情是可行的还是有不同的方法?

AssetImage()
不能用作独立的小部件。使用
Image.asset()
有效。我可以直接调用List对象,而不必引用该类

因此,代码将类似于:

Image.asset(listSampleWidget[0].foo)

我在我的测试设备上得到了照片

您的列表是在类之外创建的,您可以直接使用它,而无需使用类名。或者可以在类中使用静态类型创建它,以访问您想要的方式
listSampleWidget[0]。foo
获取包含资产的字符串对象,对吗?我试过了,但它返回了一个错误“元素类型‘AssetImage’无法分配给列表类型‘Widget’”。我认为问题在于我将AssetImage用作普通的Widget,文档说明AssetImage必须在图像下使用:onlyRight。。但AssetImageClass不是一个小部件,而是一个图像提供者。您应该使用Image.asset()将图像显示为widgetwhat@sahdepsingh提到的有效图像。使用
Image.asset(listSampleWidget[0].foo)
我能够获得存储在assets/文件夹中的图像。谢谢