flutter - 当我尝试在 listview 中使用时,我设置了布尔条件,我收到了这个错误

当我尝试在 listveiw 中使用时,我创建了 bool 条件,但出现了这个错误(预期 1 个位置参数,但找到了 0 个。尝试添加缺少的参数。)什么时候通过 isBool value 它给了我这个错误(未定义name 'isBool'。尝试将名称更正为已定义的名称,或定义名称。)

import 'package:chad_cafe/configs/color.dart';
import 'package:flutter/material.dart';

class SigleItem extends StatelessWidget {
  //const SigleItem({Key? key}) : super(key: key);

  bool isBool = false;
  SigleItem(this.isBool);
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.symmetric(horizontal: 10),
      child: Row(
        children: [
          Expanded(
              child: Container(
            child: Center(
              child: Image.asset('assets/bbqpizza.png'),
            ),
            height: 100,
          )),
          Expanded(
              child: Container(
            height: 100,
            child: Column(
              mainAxisAlignment: isBool == false
                  ? MainAxisAlignment.spaceAround
                  : MainAxisAlignment.spaceEvenly,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Column(
                  children: [
                    Text(
                      'ProductName',
                      style: TextStyle(
                          color: textColor, fontWeight: FontWeight.bold),
                    ),
                    const Text(
                      'RS-799',
                      style: TextStyle(
                        color: Colors.grey,
                      ),
                    )
                  ],
                ),
                isBool == false
                    ? Container(
                        margin: const EdgeInsets.only(right: 15),
                        padding: const EdgeInsets.symmetric(horizontal: 10),
                        height: 35,
                        decoration: BoxDecoration(
                          border: Border.all(color: Colors.grey),
                          borderRadius: BorderRadius.circular(30),
                        ),
                        child: Row(
                          children: [
                            const Expanded(
                              child: Text(
                                'RS-799',
                                style: TextStyle(
                                  color: Colors.grey,
                                ),
                              ),
                            ),
                            Center(
                              child: Icon(
                                Icons.arrow_drop_down,
                                size: 20,
                                color: primaryColor,
                              ),
                            ),
                          ],
                        ),
                      )
                    : const Text('750')
              ],
            ),
          )),
          Expanded(
            child: Container(
                height: 100,
                padding: isBool == false
                    ? EdgeInsets.symmetric(horizontal: 15, vertical: 32)
                    : EdgeInsets.only(left: 15, right: 15),
                child: isBool == false
                    ? Container(
                        decoration: BoxDecoration(
                          border: Border.all(color: Colors.grey),
                          borderRadius: BorderRadius.circular(30),
                        ),
                        child: Center(
                          child: Row(
                            children: [
                              Icon(
                                Icons.add,
                                color: primaryColor,
                                size: 20,
                              ),
                              Text(
                                'Add',
                                style: TextStyle(
                                  color: primaryColor,
                                ),
                              )
                            ],
                          ),
                        ),
                      )
                    : Column(
                        children: [
                          const Icon(
                            Icons.delete,
                            size: 30,
                            color: Colors.black,
                          ),
                          const SizedBox(height: 5),
                          Container(
                            decoration: BoxDecoration(
                              border: Border.all(color: Colors.grey),
                              borderRadius: BorderRadius.circular(30),
                            ),
                            child: Center(
                              child: Row(
                                children: [
                                  Icon(
                                    Icons.add,
                                    color: primaryColor,
                                    size: 20,
                                  ),
                                  Text(
                                    'Add',
                                    style: TextStyle(
                                      color: primaryColor,
                                    ),
                                  )
                                ],
                              ),
                            ),
                          )
                        ],
                      )),
          ),
          isBool == false
              ? Container()
              :const Divider(
                  height: 1,
                  color: Colors.black,
                ),
        ],
      ),
    );
    isBool == false
        ? Container()
        : Divider(
            height: 1,
            color: Colors.black,
          );
  }
}





import 'package:chad_cafe/Widgets/single_item.dart';
import 'package:chad_cafe/configs/color.dart';
import 'package:flutter/material.dart';

class ReviewCart extends StatelessWidget {
  const ReviewCart({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: ListTile(
        title: const Text("Total Amount"),
        trailing: Container(
          width: 160,
          child: MaterialButton(
            onPressed: () {},
            child: const Text('Submit '),
            color: primaryColor,
            shape:
                RoundedRectangleBorder(borderRadius: BorderRadius.circular(30)),
          ),
        ),
      ),
      appBar: AppBar(
        backgroundColor: primaryColor,
        title: const Text(
          'Review Cart',
          style: TextStyle(
            fontSize: 18,
          ),
        ),
      ),
      body: ListView(
        children: [
          const SizedBox(
            height: 10,
          ),
          SigleItem(isBool),//Undefined name 'isBool'.
Try correcting the name to one that is defined, or defining the name.
          const SizedBox(
            height: 10,
          ),
        ],
      ),
    );
  }
}

回答1

“isBool”实例属于“SingleItem”类。在您的“ReviewCart”类中,您试图传递在该类中不可用的“isBool”(本身),同时创建“SingleItem”类的实例。

尝试传递一个实际的 bool value(true/false) 而不是 'isBool'。

回答2

我认为你正在合并你的类和小部件类,所以我最好的猜测是你应该将一个 bool 参数传递给你的构造函数;

body: ListView(
        children: [
          const SizedBox(
            height: 10,
          ),
          SigleItem(isBool),
          const SizedBox(
            height: 10,
          ),
        ],
      ),

如果我猜错了,请在问题中添加更多信息

回答3

问题是变量 isBoolReviewCart 的构建方法的上下文中未定义 - 它只能作为 SingleItem 实例的成员使用。

当你构造一个新的 SingleItem 实例时,你需要传递一个 value 它是一个定义的变量或者一个布尔字面量:

class ReviewCart extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // omitted
      body: ListView(
        children: [
          SingleItem(false); // or true, or some variable which is defined in this context.
        ],
      ),
    );
  }
}

从名称 ReviewCart 来看,在某些时候,您可能会从购物车中的产品列表构建列表 - 这是一个非常简单的示例,说明其外观:

class ReviewCart extends StatelessWidget {
  List<Product> products;

  ReviewCart(this.products);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // omitted
      body: ListView(
        children: products.map((product) => 
          SingleItem(product.someBooleanValue)
        ).toList(),
      ),
    );
  }
}

相似文章

最新文章