为什么在删除onTap和OtherCallBacks之后此Flutter代码不起作用

jalok2008

我是Flutter的新手,目前正在练习。我正在从官方文档中学习,并且自己尝试(删除操作)。但是为什么不告诉我是行不通的。我只是想了解结构,因此我在阅读了官方文档后尝试了此方法。但它显示错误。我回到文档,我找不到我的错误在哪里,请帮忙

import 'package:flutter/material.dart';

class Product {
  Product({this.name});
  final String name;
}

class Item extends StatelessWidget {
  Item({this.product});
  final Product product;
  @override
  Widget build(BuildContext context) {
    return ListTile(
      leading: CircleAvatar(
        child: Text(product.name[0]),
      ),
      title: Text(product.name),
    );
  }
}

class MyShoppingList extends StatefulWidget {
  MyShoppingList({this.products});
  final List<Product> products;

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

class _MyShoppingListState extends State<MyShoppingList> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Shopping List"),
      ),
      body: Column(
        children: <Widget>[
          ListView(
            children: widget.products.map((Product product) {
              Item(product: product);
            }).toList(),
          )
        ],
      ),
    );
  }
}

main() {
  return runApp(MaterialApp(
    home: MyShoppingList(
      products: <Product>[
        Product(name: "Hello"),
        Product(name: "World"),
        Product(name: "")
      ],
    ),
  ));
}
萨米尔·艾哈迈德(Samir N Ahmad)

您的代码中有3个问题:

第一:您在列内使用listView,并且两者都有无限制的高度。

解决方案:例如,您可以将listview包装Expanded为如下所示:

Column(
    children: <Widget>[
      Expanded(
        child: ListView(
          children: widget.products.map((Product product) {
            return Item(product: product);
          }).toList(),
        ),
      )
    ],
  )

第二个问题:您需要在map方法内使用return关键字。

 ListView(
           children: widget.products.map((Product product) {
             // You need to return the Item widget here.
             return Item(product: product);
            }).toList(),
        ),

第三个问题:您试图显示窗口小部件product.name内部的第一个字符,listTile有时可能为null,因此必须检查是否product.namenull第一个。

ListTile(
  leading: CircleAvatar(
    child: Text(
        product.name == null || product.name == "" ? " " : product.name[0]),
  ),
  title: Text(product.name),
)

最终代码将是:

import 'package:flutter/material.dart';

class Product {
  Product({this.name});
  final String name;
}

class Item extends StatelessWidget {
  Item({this.product});
  final Product product;
  @override
  Widget build(BuildContext context) {
    return ListTile(
      leading: CircleAvatar(
        child: Text(
            product.name == null || product.name == "" ? " " : product.name[0]),
      ),
      title: Text(product.name),
    );
  }
}

class MyShoppingList extends StatefulWidget {
  MyShoppingList({this.products});
  final List<Product> products;

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

class _MyShoppingListState extends State<MyShoppingList> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Shopping List"),
      ),
      body: Column(
        children: <Widget>[
          Expanded(
            child: ListView(
              children: widget.products.map((Product product) {
                return Item(product: product);
              }).toList(),
            ),
          )
        ],
      ),
    );
  }
}

main() {
  return runApp(MaterialApp(
    home: MyShoppingList(
      products: <Product>[
        Product(name: "Hello"),
        Product(name: "World"),
        Product(name: "")
      ],
    ),
  ));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么此代码不起作用?

C ++为什么此代码不起作用?

范围-VBA-为什么此代码不起作用?

String.Format:为什么此代码不起作用?

为什么此大猩猩会话代码不起作用?

为什么此SwiftUI Picker代码不起作用?

为什么此代码不起作用属性?

为什么此C代码在JavaScript中不起作用?

为什么此代码不起作用?C ++

为什么此代码不起作用,如何解决?

为什么此代码不起作用(基本)

为什么此GridBagLayout代码不起作用?

为什么此SFML C ++代码不起作用?

为什么此python代码不起作用?

为什么此线性和二进制搜索基准代码不起作用?

execvp()和/或字符串问题,为什么此代码不起作用?

删除JavaScript事件:为什么此示例不起作用?

为什么删除字符串和更新数据集的代码不起作用?

想删除星号和前面的字符并跟随它,为什么我的代码不起作用

为什么flutter插件在代码中不起作用?

.append之后,为什么.on不起作用?

当将它们链接在一起时,为什么此重复数据删除代码不起作用?

为什么相同的Java和PHP代码不起作用?

简单的 python 和 vtk 代码不起作用。为什么?

我知道此代码不起作用,为什么我找到的代码起作用?是什么使错误的代码错了?

为什么此toggleClass()不起作用?

为什么此聚合不起作用?

为什么此XQuery不起作用?

为什么此cronjob不起作用?