【问题标题】:Why expanded view is not being shown为什么未显示展开的视图
【发布时间】:2019-05-19 11:40:32
【问题描述】:

我正在尝试颤动,这里我有一个简单的卡片视图,其中有一个 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 的 Container 展开时,这是可见的

当我使用扩展时,这就是显示的内容

【问题讨论】:

  • 你在哪里使用ListView
  • 它在另一个文件中,现在发布它
  • 有什么想法吗???
  • 实际上您的代码似乎没有任何问题
  • 这就是困扰我的问题,让我换个模拟器,会是这个原因吗?

标签: dart flutter


【解决方案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

【讨论】:

  • 不,nada,没什么,如果你愿意,我可以在 Skype 上共享屏幕
  • 我正在查看链接
  • 感谢您的努力,我已经发布了答案
【解决方案2】:

好的,经过几个小时我终于发现,错误出现在我的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,你真的帮助了我。谢谢你的时间。虽然我仍然需要找出原因,但为什么它不能那样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多