为什么未显示扩展视图

时间:2019-05-19 11:40:32

标签: dart flutter

我正在尝试颤抖,这里有一个简单的卡片视图,其中有一个add AddButton,当按下按钮时将添加新卡片。
现在,我想让它可滚动,因此在Column中添加了ListView和扩展的Widget。这是代码...

   import 'package:flutter/material.dart';

import './products.dart';
import './product_control.dart';

class ProductManger extends StatefulWidget {
  final String startingProduct;
  ProductManger({this.startingProduct = "Sweet Tester"});
  @override
  State<StatefulWidget> createState() {
    return _ProductManagerState();
  }
}

class _ProductManagerState extends State<ProductManger> {
  List<String> _products = ['Food Tester'];

  @override
  void initState() {
    _products.add(widget.startingProduct);
    super.initState();
  }

  void _addProducts(String product) {
    setState(() {
      _products.add(product);
    }); 
  }

  @override
  Widget build(BuildContext context) {
    return  Column(children: [ 
      Container(margin: EdgeInsets.all(10.0), child: ProductControl(_addProducts)),
      Expanded(child: Products(_products))
    ]);
  }
}

如果我将高度更改为 Expanded Container ,它可以按预期工作,但是现在除了按钮以外,什么都没有显示。
我目前正在关注一个教程,编写的代码完全相同,但是flutter的版本是0.3.2,我正在使用1.5
否则模拟器可能会出现问题?
希望这可以帮助。

这是listView代码

    import 'package:flutter/material.dart';

class Products extends StatelessWidget {
  final List<String> products;

  Products([this.products = const []]);

  @override
  Widget build(BuildContext context) {
    return ListView(
        children: products
            .map((element) => Card(
                  child: Column(
                    children: <Widget>[
                      Image.asset('assets/food.jpg'),
                      Text(element)
                    ],
                  ),
                ))
            .toList());
  }
}

当我使用高度为300.0的容器进行扩展时,这是可见的enter image description here

当我使用扩展时,这就是所显示的 enter image description here

2 个答案:

答案 0 :(得分:1)

请尝试更改

 @override
  Widget build(BuildContext context) {
    return  Column(children: [ 
      Container(margin: EdgeInsets.all(10.0), child: ProductControl(_addProducts)),
      Expanded(child: Products(_products))
    ]);
  }

收件人

 @override
  Widget build(BuildContext context) {
    return  SingleChildScrollView(
     child: Column: children: [ 
      Container(
        margin: EdgeInsets.all(10.0), 
        child: ProductControl(_addProducts)),
      Expanded(child: Products(_products))
    ]);
  }

如果它不起作用,请查看SingleChildeScrollView

答案 1 :(得分:0)

好吧,所以几个小时后我终于发现了,错误出在我的main.dart文件中。
最初,代码是

    import 'package:flutter/material.dart';
import './product_manager.dart';
import 'package:flutter/rendering.dart';

void main(){ 
   debugPaintSizeEnabled=true;
  runApp(MyApp());
  } 

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.deepOrange,
        accentColor: Colors.deepPurple
      ),
      home: Scaffold(
          appBar: AppBar(
            title: Text("Alpit anand"),
          ),
          body: Column(
            children: [ProductManger()],
          )),
    );
  }
}

但是当我更改为

    import 'package:flutter/material.dart';
import './product_manager.dart';
import 'package:flutter/rendering.dart';

void main(){ 
   debugPaintSizeEnabled=true;
  runApp(MyApp());
  } 

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.deepOrange,
        accentColor: Colors.deepPurple
      ),
      home: Scaffold(
          appBar: AppBar(
            title: Text("Alpit anand"),
          ),
          body:
          ProductManger(),
          ),
    );
  }
}

感谢pskink,您真的帮助了我。谢谢你的时间。尽管我仍然必须找出原因,但为什么它不能那样工作。