如何引用在 class 中创建的 List<> 对象?
How do I reference to a List<> object that was created in a class?
我的 Flutter 应用程序中有 2 个单独的文件,main.dart 和 class1.dart
class1.dart 在我的模型/文件夹中定义
我正在尝试访问我从 SampleWidget class 创建的列表,但我不确定如何执行此操作。 IntelliSense 无法找到我从 SampleWidget 的实例对象创建的列表。
我想要实现的是:
AssetImage(SampleWidget.listSampleWidget[0].foo)
class1.dart
class SampleWidget {
final String foo;
final int bar;
SampleWidget({this.foo, this.bar});
}
List<SampleWidget> listSampleWidget = [
SampleWidget(
foo: 'assets/001.png',
bar: 420,
),
];
main.dart只是新建Flutter应用时的默认样板代码,
main.dart
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.
);
}
}
如何从此处的 class 引用列表?这样的事情是否可行或者是否有不同的方法?
AssetImage()
不能用作独立的小部件。使用 Image.asset()
有效。我可以直接调用 List 对象,而不必显然引用 class。
所以代码看起来像这样:
Image.asset(listSampleWidget[0].foo)
然后我在我的测试设备上得到了照片!
我的 Flutter 应用程序中有 2 个单独的文件,main.dart 和 class1.dart
class1.dart 在我的模型/文件夹中定义
我正在尝试访问我从 SampleWidget class 创建的列表,但我不确定如何执行此操作。 IntelliSense 无法找到我从 SampleWidget 的实例对象创建的列表。
我想要实现的是:
AssetImage(SampleWidget.listSampleWidget[0].foo)
class1.dart
class SampleWidget {
final String foo;
final int bar;
SampleWidget({this.foo, this.bar});
}
List<SampleWidget> listSampleWidget = [
SampleWidget(
foo: 'assets/001.png',
bar: 420,
),
];
main.dart只是新建Flutter应用时的默认样板代码,
main.dart
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.
);
}
}
如何从此处的 class 引用列表?这样的事情是否可行或者是否有不同的方法?
AssetImage()
不能用作独立的小部件。使用 Image.asset()
有效。我可以直接调用 List 对象,而不必显然引用 class。
所以代码看起来像这样:
Image.asset(listSampleWidget[0].foo)
然后我在我的测试设备上得到了照片!