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 使用with ListView.builder扩展小部件的任何替代方法_Flutter_Dart_Flutter Layout_Flutter Listview - Fatal编程技术网

Flutter 使用with ListView.builder扩展小部件的任何替代方法

Flutter 使用with ListView.builder扩展小部件的任何替代方法,flutter,dart,flutter-layout,flutter-listview,Flutter,Dart,Flutter Layout,Flutter Listview,我需要设计一个屏幕,根据选择的按钮显示不同的小部件(selectedWidget)。问题是内容是动态的,我必须对所有API使用ListView.builder。而ListView.builder仅在包含ListView的行被包装在扩展的小部件中时才起作用。我想在我的ListView下面有两个按钮,这是我无法实现的,因为扩展的小部件覆盖了ListView所在的整个列 这就是我需要的设计 代码给出了我一直在使用的基本结构。selectedWidget是ListView.builder小部件,它将根

我需要设计一个屏幕,根据选择的按钮显示不同的小部件(selectedWidget)。问题是内容是动态的,我必须对所有API使用ListView.builder。而ListView.builder仅在包含ListView的行被包装在扩展的小部件中时才起作用。我想在我的ListView下面有两个按钮,这是我无法实现的,因为扩展的小部件覆盖了ListView所在的整个列

这就是我需要的设计

代码给出了我一直在使用的基本结构。selectedWidget是ListView.builder小部件,它将根据所选的FlatButton进行选择。此外,包含selectedWidget的列具有动态高度。它应该根据listview的大小进行调整,所以我不能定义固定高度,甚至不能定义maxHeight。我在这里只能给你身高。我的ListView下面的两个按钮应该在我的ListView的正下方,并采用flex 3的列宽

我还尝试过禁用ListView的滚动,并使用SingleChildScrollView,但是ListView下面的两个按钮也开始滚动,这是我不想要的。我需要他们在屏幕上是静态的,只有ListView应该滚动

我需要解决上述问题。我需要为这个扩展的小部件找到一个解决方法,它不允许我在listview的正下方对齐按钮,并提供空白。请分享是否有ListView.builder的替代品,因为我认为如果没有扩展的小部件,我无法使用ListView.builder。我尝试了ListView和扩展小部件的所有可能结构

class MyScreen extends StatefulWidget {
  @override
  _MyScreenState createState() => _MyScreenState();
}

class _MyScreenState extends State<MyScreen> {
  @override
  Widget build(BuildContext context) {
    return Column(
    children:[
      Expanded(
          child: Row(
          Expanded(flex: 2,
            child: Column(
                children: [
                    FlatButton(),
                    FlatButton(),
                    FlatButton(),
                    FlatButton(),
                ]
            )
           ),
          Expanded(flex: 3, 
            child: Column(
                children: [
                    Expanded(selectedWidget),
                    Row(children: [FlatButton(), FlatButton()], )
                ]
            )
          ),
      )
      )
    ],);
  }
  
}
class MyScreen扩展StatefulWidget{
@凌驾
_MyScreenState createState()=>\u MyScreenState();
}
类_MyScreenState扩展状态{
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
扩大(
孩子:排(
扩展(弹性:2,
子:列(
儿童:[
FlatButton(),
FlatButton(),
FlatButton(),
FlatButton(),
]
)
),
扩大(弹性:3,
子:列(
儿童:[
扩展(selectedWidget),
行(子项:[FlatButton(),FlatButton()],)
]
)
),
)
)
],);
}
}

也许您可以使用
Flexible
并在ListView中设置
包覆面收缩:true、
。此后,以下两个按钮可能不需要
展开
小部件

child: Column(
  children: [
    Flexible(
      child: ListView.builder(
        shrinkWrap: true,
        itemBuilder: (BuildContext context, int index) => Text(index.toString()),
        itemCount: 6,
      ),
    ),
    Row(
      ... // 2 Buttons

那么,为什么您有一个
,其中只有一个
扩展的
子项?也许发布一张具有所需结果的图像?我只需要在右侧栏中显示一个孩子。无论选择哪个按钮,都应显示该列表视图。一个包含一个子项的
是无用的,是否可以发布一个包含所需结果的图像?如果您只需要一个listview和下面的几个按钮,只需使用列[expanded>listview.builder,行[button1,button2,等等]]-我指的是一个包含两个子项的
列:
展开的
带有
列表视图。生成器
子项和
带有两个
按钮的子项。我发布了一张带有所需结果的图像。我确实尝试过这个——“列[expanded>listview.builder,行[button1,button2,等等]”。但是,如果我不将父行包装在一个扩展的小部件中,该小部件会在listview下方提供空白,并且按钮位于屏幕底部,则listview不起作用,我不希望这样。listview的高度必须与左侧的4个按钮高度相匹配?