Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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 具有可扩展itemBuilder的ListView-颤振_Flutter_Dart_Flutter Layout - Fatal编程技术网

Flutter 具有可扩展itemBuilder的ListView-颤振

Flutter 具有可扩展itemBuilder的ListView-颤振,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我正在尝试为我的应用程序做一个带有用户评论的旋转木马。我希望它能够水平显示,并具有定义的高度。如果审阅过长,容器将显示一个按钮,根据审阅高度展开或折叠容器。 问题是,我不知道如何使容器达到扩展评论的高度。你知道怎么解决吗?下面是出现问题的代码和图片: import 'package:flutter/material.dart'; List<String> reviews = [ 'Lorem ipsum dolor sit amet, consectetur adipiscin

我正在尝试为我的应用程序做一个带有用户评论的旋转木马。我希望它能够水平显示,并具有定义的高度。如果审阅过长,容器将显示一个按钮,根据审阅高度展开或折叠容器。 问题是,我不知道如何使容器达到扩展评论的高度。你知道怎么解决吗?下面是出现问题的代码和图片:

import 'package:flutter/material.dart';

List<String> reviews = [
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
];

class Review extends StatefulWidget {
  @override
  _ReviewState createState() => _ReviewState();
}

class _ReviewState extends State<Review> {
  bool isExpanded = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          children: [
            //! This is the height I want to fix
            Container(
              height: 150,
              width: double.infinity,
              color: Colors.grey,
              child: ListView.builder(
                scrollDirection: Axis.horizontal,
                physics: BouncingScrollPhysics(),
                controller: ScrollController(),
                itemCount: reviews.length,
                itemBuilder: _buildList,
              ),
            )
          ],
        ),
      ),
    );
  }

  Widget _buildList(BuildContext context, int i) {
    String firstHalf;
    String secondHalf;
    int maxLength = 150;

    final String review = reviews[i];
    final Size size = MediaQuery.of(context).size;
    final dynamic onTapFn = () {
      setState(() {
        isExpanded = !isExpanded;
      });
    };

    // Logic to make the body review expandable
    if (review != null && review.length > maxLength) {
      firstHalf = review.substring(0, maxLength);
      secondHalf = review.substring(maxLength, review.length);
    } else {
      firstHalf = review;
      secondHalf = "";
    }

    return Container(
      margin: EdgeInsets.all(8.0),
      decoration: BoxDecoration(
        border: Border.all(),
        borderRadius: BorderRadius.circular(4.0),
        color: Colors.yellow,
      ),
      padding: EdgeInsets.all(16.0),
      width: size.width - 60,
      child: secondHalf.isEmpty
          ? Text(firstHalf)
          : Column(
              children: <Widget>[
                Text(
                  isExpanded ? (firstHalf + secondHalf) : (firstHalf + "..."),
                ),
                InkWell(
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.end,
                    children: <Widget>[
                      Text(
                        isExpanded ? "Collapse" : "Read more",
                        style: TextStyle(
                          color: Colors.blue,
                        ),
                      ),
                    ],
                  ),
                  onTap: () => onTapFn(),
                ),
              ],
            ),
    );
  }
}
导入“包装:颤振/材料.省道”;
清单审查=[
“Lorem ipsum dolor sit amet,一位杰出的献身者,他是一位临时劳工和职业经理人。”,
“Lorem ipsum dolor sit amet,是一位杰出的献身者,他是一名临时雇员,从事劳动和工作。他是一名临时雇员,他是一名普通雇员。”,
“Lorem ipsum door sit amet,献身于发展精英,在劳动和财富的临时契约中。但在最低限度的契约中,nostrud在公共消费品上的实践。两人或两人在无财产权的情况下的共同义务。罪除外。”有时,如果你不自以为是,就必须为自己的行为负责,
];
类复查扩展了StatefulWidget{
@凌驾
_ReviewState createState()=>\u ReviewState();
}
类_ReviewState扩展状态{
bool-isExpanded=false;
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:安全区(
子:列(
儿童:[
//!这是我要确定的高度
容器(
身高:150,
宽度:double.infinity,
颜色:颜色。灰色,
子项:ListView.builder(
滚动方向:轴水平,
物理:弹跳CrollPhysics(),
控制器:ScrollController(),
itemCount:reviews.length,
itemBuilder:\u buildList,
),
)
],
),
),
);
}
小部件构建列表(构建上下文,inti){
串上半段;
串后半部分;
int maxLength=150;
最终字符串审核=审核[i];
最终大小=MediaQuery.of(context).Size;
最终动态onTapFn=(){
设置状态(){
isExpanded=!isExpanded;
});
};
//使body review可扩展的逻辑
if(review!=null&&review.length>maxLength){
firstHalf=review.substring(0,maxLength);
secondHalf=review.substring(maxLength,review.length);
}否则{
前半部分=回顾;
后半段=”;
}
返回容器(
边距:所有边集(8.0),
装饰:盒子装饰(
border:border.all(),
边界半径:边界半径。圆形(4.0),
颜色:颜色,黄色,
),
填充:所有边缘设置(16.0),
宽度:size.width-60,
孩子:第二个半小时。我是空的
?文本(上半部分)
:列(
儿童:[
正文(
isExpanded?(上半部分+下半部分):(上半部分+“…”),
),
墨水池(
孩子:排(
mainAxisAlignment:mainAxisAlignment.end,
儿童:[
正文(
iExpanded?“折叠”:“阅读更多”,
样式:TextStyle(
颜色:颜色,蓝色,
),
),
],
),
onTap:()=>onTapFn(),
),
],
),
);
}
}


提前感谢Wrap
SingleChildScrollView
当属性
扩展时,对
buildList
最顶层容器的父容器Wrap
SingleChildScrollView
表示感谢。@AshokKuvaraja是的,但我不想随评论滚动,我希望容器随评论而增长