dart 在flutter中将小部件封装在自己的类中?

ljsrvy3e  于 2024-01-03  发布在  Flutter
关注(0)|答案(2)|浏览(142)

我正在尝试为我的listview创建一个tile。当tile放置在listview文件中时,我想知道如何将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),
        ...

字符串

jchrr9hc

jchrr9hc1#

我认为你可以简单地创建一个构造函数并使用它

import 'package:flutter/material.dart';

class Tile extends StatelessWidget {
  final String text;
  final String time;

  /// Here is your constructor
  Tile({Key key, this.text, this.time});

  @override
  Widget build(BuildContext context) {
    return _buildTitle(this.text, this.time);
  }

  Widget _buildTitle(String text, String time) {
    return new Align(
        child: new Container(
          // padding: EdgeInsets.all(5.0),
        ));
  }
}

字符串

dhxwm5r4

dhxwm5r42#

一般来说,在创建小部件构造函数时,您还需要添加一个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中甚至有一个快捷方式。
1.写出最终变量的名称。
1.将光标放在它们上面,然后按Option+Retern(或Alt+Enter)。


的数据
图片来源这里。

相关问题