我正在尝试为tile
创建listview
。当tile放在listview文件中时,tile正在工作,我想知道如何将tile
窗口小部件封装到自己的类文件中。
具体来说,如果tile
对象没有参数,我可以简单地扩展一个无状态小部件并调用build
方法返回一个新的tile对象。
但是如果要使用参数(即自定义文本)创建tile对象,我该如何传递此信息?或者将小部件保留在listview
类本身中会更好吗?
示例:
class Tile extends StatelessWidget {
@override
Widget build(BuildContext context){
return _tile(); //Error, How do i pass the arguments?
}
Widget _tile(String text, String time) {
return new Align(
child: new Container(
// padding: EdgeInsets.all(5.0),
...
答案 0 :(得分:4)
我认为你可以简单地创建一个构造函数并使用它
import 'package:flutter/material.dart';
class Tile extends StatelessWidget {
String text;
String time;
/// Here is your constructor
Tile(this.text, this.time);
@override
Widget build(BuildContext context) {
return _tile(this.text, this.time); //Error, How do i pass the arguments?
}
Widget _tile(String text, String time) {
return new Align(
child: new Container(
// padding: EdgeInsets.all(5.0),
));
}
}
答案 1 :(得分:0)
通常,在创建窗口小部件构造函数时,您还会添加一个Key并调用super。由于小部件是不可变的,因此变量也应标记为final。
class Tile extends StatelessWidget {
// make these final
final String text;
final String time;
// constructor
const Tile({Key key, this.text, this.time}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListTile(
// ...
);
}
}
并这样称呼它:
Tile(text: 'hello', time: '5:30');
创建自定义构造函数非常普遍,以至于Android Studio中甚至还有一个快捷方式。
图片来源here。