首页 > 解决方案 > 如何在 SingleChildScrollView 内的列内居中小部件

问题描述

我有这个屏幕,上面有一个 searchWidget,下面有一个列表。但是列表数据是在查询之后出现的searchWidget,并且在等待获取数据时,我想ActivityIndicator在屏幕中心呈现一个。但是进度指示器似乎并没有占据屏幕的其余空间,它就在 的正下方searchWidget,如果我将它包裹在 anExpanded中,则会出现错误

body: SingleChildScrollView(
    physics: BouncingScrollPhysics(),
    child: Column(
      mainAxisSize: MainAxisSize.max,
      children: [
        SearchWidget(
            hintText: 'Search',
            textEditingController: _textEditingController,
            onCancel: () {
              setState(() {
                _textEditingController.text = '';
                data = [];
              });
            },
            onSubmitted: (val) {
              onSubmitted(val);
            }),
        _isLoading 
            ? (Container(
                child: Center(
                  child: CupertinoActivityIndicator(
                    radius: 15,
                  ),
                ),
              ))
            : (data.length == 0
                ? SizedBox()
                : Padding(
                    padding:
                        const EdgeInsets.only(top: 8, right: 8, left: 8),
                    child: ListView.builder(
                      shrinkWrap: true,
                      physics: NeverScrollableScrollPhysics(),
                      itemCount: data.length,
                      itemBuilder: (ctx, i) =>
                          ListItem(item: data[i]),
                    ),
                  ))
      ],
    ),
  ),

在此处输入图像描述

标签: flutterdart

解决方案


尝试扩展:

    _isLoading 
        ? (Expanded(
            child: Center(
              child: CupertinoActivityIndicator(
                radius: 15,
              ),
            ),
          ))

推荐阅读