Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter ListView不是';t在颤振中滚动_Flutter_Flutter Listview - Fatal编程技术网

Flutter ListView不是';t在颤振中滚动

Flutter ListView不是';t在颤振中滚动,flutter,flutter-listview,Flutter,Flutter Listview,ListView在这里不起作用,首先我使用了Positioned()代替padding,但github上也有类似的问题,我知道可滚动小部件不应该放在Positioned()中,所以我用padding()替换了它,但没有成功 这是我的密码 import 'package:flutter/material.dart'; import 'package:cpblog/webview.dart'; import 'package:flutter/rendering.dart'; class Detai

ListView在这里不起作用,首先我使用了Positioned()代替padding,但github上也有类似的问题,我知道可滚动小部件不应该放在Positioned()中,所以我用padding()替换了它,但没有成功

这是我的密码

import 'package:flutter/material.dart';
import 'package:cpblog/webview.dart';
import 'package:flutter/rendering.dart';

class DetailsPage extends StatefulWidget {
  final heroTag;
  final foodName;
  final url;
  final text;
  DetailsPage({this.heroTag, this.foodName,this.url,this.text});

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

class _DetailsPageState extends State<DetailsPage> {
  var selectedCard = 'WEIGHT';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Color(0xFF7A9BEE),
        appBar: AppBar(
          leading: IconButton(
            onPressed: () {
              Navigator.of(context).pop();
            },
            icon: Icon(Icons.arrow_back_ios),
            color: Colors.white,
          ),
          backgroundColor: Colors.transparent,
          elevation: 0.0,
          title: Text('Here You Go!!',
              style: TextStyle(
                  fontFamily: 'Montserrat',
                  fontSize: 18.0,
                  color: Colors.white)),
          centerTitle: true,
          actions: <Widget>[
            IconButton(
              icon: Icon(Icons.more_horiz),
              onPressed: () {},
              color: Colors.white,
            )
          ],
        ),
        body: ListView(children: [
          Stack(children: [
            Container(
                height: MediaQuery.of(context).size.height - 82.0,
                width: MediaQuery.of(context).size.width,
                color: Colors.transparent),
            Padding(
              padding: const EdgeInsets.only(top: 75.0),
              child: Container(
                  decoration: BoxDecoration(
                      borderRadius: BorderRadius.only(
                        topLeft: Radius.circular(45.0),
                        topRight: Radius.circular(45.0),
                      ),
                      color: Colors.white),
                  height: MediaQuery.of(context).size.height - 100.0,
                  width: MediaQuery.of(context).size.width),
            ),
            Padding(
              padding: EdgeInsets.only(top: 30.0,
                left: (MediaQuery.of(context).size.width / 2) - 100.0,),
              child: Hero(
                  tag: widget.heroTag,
                  child: Container(
                      decoration: BoxDecoration(
                        shape: BoxShape.circle,
                          image: DecorationImage(
                              image: NetworkImage(widget.heroTag),
                              fit: BoxFit.cover)),
                      height: 200.0,
                      width: 200.0)),
            ),
            Padding(
              padding: const EdgeInsets.only(top:250.0,right:25.0,left: 25.0),
              child: ListView(
                shrinkWrap: true,
                children: <Widget>[
                  Text(widget.foodName,
                      style: TextStyle(
                          fontFamily: 'Montserrat',
                          fontSize: 22.0,
                          fontWeight: FontWeight.bold)),
                  SizedBox(height: 20.0),
                  Text(widget.text,
                      style: TextStyle(
                          fontFamily: 'Montserrat',
                          fontSize: 20.0,
                          )),        
                  SizedBox(height: 20.0),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: <Widget>[
                      Container(
                        width: 125.0,
                        height: 40.0,
                        decoration: BoxDecoration(
                            borderRadius: BorderRadius.circular(17.0),
                            color: Color(0xFF7A9BEE)),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                          children: <Widget>[
                            InkWell(
                              onTap: () {
                                Navigator.push(
                                        context,
                                        MaterialPageRoute(builder: (context) => WebView(widget.url, widget.foodName)));
                                    },
                                child:Text('View More',
                                style: TextStyle(
                                    color: Colors.white,
                                    fontFamily: 'Montserrat',
                                    fontSize: 15.0)),
                            )
                          ],
                        ),
                      )
                    ],
                  ),
                  SizedBox(height: 20.0),
                  Container(
                      height: 150.0,
                      child: ListView(
                        scrollDirection: Axis.horizontal,
                        children: <Widget>[
                          _buildInfoCard('WEIGHT', '300', 'G'),
                          SizedBox(width: 10.0),
                            _buildInfoCard('CALORIES', '267', 'CAL'),
                            SizedBox(width: 10.0),
                            _buildInfoCard('VITAMINS', 'A, B6', 'VIT'),
                            SizedBox(width: 10.0),
                            _buildInfoCard('AVAIL', 'NO', 'AV')
                        ],
                      )
                    ),

                  SizedBox(height: 20.0),
                    Padding(
                      padding: EdgeInsets.only(bottom:5.0),
                      child: Container(
                        decoration: BoxDecoration(
                          borderRadius: BorderRadius.only(topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0), bottomLeft: Radius.circular(25.0), bottomRight: Radius.circular(25.0)),
                          color: Colors.black
                        ),
                        height: 50.0,
                        child:
                          InkWell(
                              onTap: () {
                                Navigator.pop(context);
                              },
                          child: Center(
                            child: Text(
                              'Back',
                              style: TextStyle(
                                color: Colors.white,
                                fontFamily: 'Montserrat'
                              )
                            ),
                          ),
                          )  
                      ),
                    )
                ],
              ),
            )
          ])
        ]));
  }

  Widget _buildInfoCard(String cardTitle, String info, String unit) {
    return InkWell(
      onTap: () {
        selectCard(cardTitle);
      },
      child: AnimatedContainer(
        duration: Duration(milliseconds: 500),
        curve: Curves.easeIn,
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(10.0),
          color: cardTitle == selectedCard ? Color(0xFF7A9BEE) : Colors.white,
          border: Border.all(
            color: cardTitle == selectedCard ? 
            Colors.transparent :
            Colors.grey.withOpacity(0.3),
            style: BorderStyle.solid,
          width: 0.75
          ),
          
        ),
        height: 100.0,
        width: 100.0,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Padding(
              padding: const EdgeInsets.only(top: 8.0, left: 15.0),
              child: Text(cardTitle,
                  style: TextStyle(
                    fontFamily: 'Montserrat',
                    fontSize: 12.0,
                    color:
                        cardTitle == selectedCard ? Colors.white : Colors.grey.withOpacity(0.7),
                  )),
            ),
            Padding(
              padding: const EdgeInsets.only(left: 15.0, bottom: 8.0),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Text(info,
                      style: TextStyle(
                          fontFamily: 'Montserrat',
                          fontSize: 14.0,
                          color: cardTitle == selectedCard
                              ? Colors.white
                              : Colors.black,
                          fontWeight: FontWeight.bold)),
                  Text(unit,
                      style: TextStyle(
                        fontFamily: 'Montserrat',
                        fontSize: 12.0,
                        color: cardTitle == selectedCard
                            ? Colors.white
                            : Colors.black,
                      ))
                ],
              ),
            )
          ]
        )
      )
    );
  }

  selectCard(cardTitle) {
    setState(() {
      selectedCard = cardTitle;
    });
  }
}
导入“包装:颤振/材料.省道”;
导入“包:cpblog/webview.dart”;
导入“package:flatter/rendering.dart”;
类DetailsPage扩展StatefulWidget{
最终heroTag;
最终食品名称;
最终网址;
最后文本;
DetailsPage({this.heroTag,this.foodName,this.url,this.text});
@凌驾
_DetailsPageState createState()=>_DetailsPageState();
}
类\u DetailsPageState扩展状态{
var selectedCard=‘重量’;
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:颜色(0xFF7A9BEE),
appBar:appBar(
领先:IconButton(
已按下:(){
Navigator.of(context.pop();
},
图标:图标(图标、箭头、背面),
颜色:颜色,白色,
),
背景颜色:颜色。透明,
标高:0.0,
标题:Text('给你!!',
样式:TextStyle(
fontFamily:“蒙特塞拉特”,
字体大小:18.0,
颜色:颜色。白色),
标题:对,
行动:[
图标按钮(
图标:图标(更多图标),
按下:(){},
颜色:颜色,白色,
)
],
),
正文:列表视图(子项:[
堆栈(子对象:[
容器(
高度:MediaQuery.of(context).size.height-82.0,
宽度:MediaQuery.of(context).size.width,
颜色:颜色。透明),
填充物(
填充:仅限常量边集(顶部:75.0),
子:容器(
装饰:盒子装饰(
borderRadius:仅限borderRadius(
左上:半径。圆形(45.0),
右上角:半径。圆形(45.0),
),
颜色:颜色。白色),
高度:MediaQuery.of(context).size.height-100.0,
宽度:MediaQuery.of(context.size.width),
),
填充物(
填充:仅限边缘设置(顶部:30.0,
左:(MediaQuery.of(context.size.width/2)-100.0,),
孩子:英雄(
标签:widget.heroTag,
子:容器(
装饰:盒子装饰(
形状:BoxShape.circle,
图像:装饰图像(
image:NetworkImage(widget.heroTag),
安装:BoxFit.盖),
高度:200.0,
宽度:200.0毫米),
),
填充物(
填充:仅限常量边集(顶部:250.0,右侧:25.0,左侧:25.0),
子:ListView(
收缩膜:对,
儿童:[
文本(widget.foodName,
样式:TextStyle(
fontFamily:“蒙特塞拉特”,
字体大小:22.0,
fontWeight:fontWeight.bold),
尺寸箱(高度:20.0),
Text(widget.Text,
样式:TextStyle(
fontFamily:“蒙特塞拉特”,
字体大小:20.0,
)),        
尺寸箱(高度:20.0),
划船(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
容器(
宽度:125.0,
身高:40.0,
装饰:盒子装饰(
边界半径:边界半径。圆形(17.0),
颜色:颜色(0xFF7A9BEE)),
孩子:排(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
墨水池(
onTap:(){
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>WebView(widget.url,widget.foodName));
},
子项:文本('查看更多',
样式:TextStyle(
颜色:颜色,白色,
fontFamily:“蒙特塞拉特”,
字体大小:15.0),
)
],
),
)
],
),
尺寸箱(高度:20.0),
容器(
高度:150.0,
子:ListView(
滚动方向:轴水平,
儿童:[
_buildInfoCard(“重量”、“300”、“克”),
尺寸箱(宽度:10.0),
_buildInfoCard('Carries','267','CAL'),
尺寸箱(宽度:10.0),
_构建信息卡(“维生素”、“A、B6”、“维生素”),
尺寸箱(宽度:10.0),
_buildInfoCard('AVAIL'、'NO'、'AV')
],
)
),
尺寸箱(高度:20.0),
填充物(
填充:仅限边缘设置(底部:5.0),
子:容器(
装饰:盒子装饰(