Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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 如何将showModalBottomSheet设置为初始高度的一半,但可展开和分解_Flutter - Fatal编程技术网

Flutter 如何将showModalBottomSheet设置为初始高度的一半,但可展开和分解

Flutter 如何将showModalBottomSheet设置为初始高度的一半,但可展开和分解,flutter,Flutter,以下代码是可撤销的,但由于colorsList有很多颜色,它最初占据了整个高度: onPressed: () { showModalBottomSheet( context: this.context, isScrollControlled: true, builder: (BuildContext context) { return Wrap( child

以下代码是可撤销的,但由于
colorsList
有很多颜色,它最初占据了整个高度:

      onPressed: () {
        showModalBottomSheet(
          context: this.context,
          isScrollControlled: true,
          builder: (BuildContext context) {
            return Wrap(
              children: [
                for (List<Color> colors in colorsList)
                  Container(
                    child: Column(
                      mainAxisSize: MainAxisSize.min,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: <Widget>[
                        Text("${colorsName[colorsList.indexOf(colors)]}"),

                        Container(
                          height: 80,
                          child: ListView.builder(
                            padding: EdgeInsets.only(left: 8, right: 8,),
                            scrollDirection: Axis.horizontal,
                            itemCount: colors.length,
                            itemBuilder: (BuildContext context, int index) {
                              return Padding(
                                padding: const EdgeInsets.only(left: 8,),
                                child: FloatingActionButton(
                                  backgroundColor: colors[index],
                                  tooltip: "Choose this color",
                                  onPressed: () {
                                    setState(() {
                                      this.color = colors[index];
                                    });
                                    Navigator.pop(context);
                                  },
                                ),
                              );
                            },
                          ),
                        ),
                      ],
                    ),
                  ),
              ],
            );
          }
        );
      },
onPressed:(){
showModalBottomSheet(
context:this.context,
是的,
生成器:(BuildContext上下文){
回程包装(
儿童:[
用于(在颜色列表中列出颜色)
容器(
子:列(
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
文本(${colorsName[colorsList.indexOf(colors)]}),
容器(
身高:80,
子项:ListView.builder(
填充:边设置。仅限(左:8,右:8,),
滚动方向:轴水平,
itemCount:colors.length,
itemBuilder:(构建上下文,int索引){
返回填充(
填充:常量边集。仅限(左:8,),
子:浮动操作按钮(
背景颜色:颜色[索引],
工具提示:“选择此颜色”,
已按下:(){
设置状态(){
this.color=颜色[索引];
});
Navigator.pop(上下文);
},
),
);
},
),
),
],
),
),
],
);
}
);
},

使用流生成器包装工作表的内容,并在发生拖动时更新流

StreamController<double> controller = StreamController.broadcast();

RaisedButton(
            child: Text('Show Buttom Sheet'),
            onPressed: () {
              showModalBottomSheet(context: context, builder: (context){
                return StreamBuilder(
                  stream: controller.stream,
                  builder:(context,snapshot) => GestureDetector(
                    onVerticalDragUpdate: (DragUpdateDetails details){
                      position = MediaQuery.of(context).size.height- details.globalPosition.dy;
                      print('position dy = ${position}');

                      position.isNegative?Navigator.pop(context)

                      :controller.add(position);

                    },
                    behavior: HitTestBehavior.translucent,
                      child:
                      Container(
                    color: Colors.red,
                    height: snapshot.hasData ? snapshot.data:200.0,
                    width: double.infinity,
                    child: Text('Child'),
                  )),
                );

              });

            }),

StreamController=StreamController.broadcast();
升起的按钮(
子项:文本(“显示按钮表”),
已按下:(){
showModalBottomSheet(上下文:上下文,生成器:(上下文){
返回流生成器(
stream:controller.stream,
生成器:(上下文,快照)=>GestureDetector(
onVerticalDragUpdate:(DragUpdate详细信息){
position=MediaQuery.of(context).size.height-details.globalPosition.dy;
打印('position dy=${position}');
position.isNegative?Navigator.pop(上下文)
:controller.add(位置);
},
行为:HitTestBehavior.transparent,
儿童:
容器(
颜色:颜色,红色,
高度:snapshot.hasData?snapshot.data:200.0,
宽度:double.infinity,
子项:文本(“子项”),
)),
);
});
}),