如何在保持扩展小部件颤动的情况下使列可滚动?

时间:2021-04-06 10:24:52

标签: flutter dart

大家好,我正在尝试将 Column 转换为可滚动 我尝试在 SingleChildScrollView 中扭曲 Column(移除所有展开的小部件)但出现错误我将列转换为 ListView(移除所有展开的小部件)但我得到一个错误。

是否有任何解决方案可以保留扩展小部件?

所以有人可以帮我吗?请

这是我的代码

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomInset: false,
      floatingActionButton: buttonTheme,
      drawer: SideMenu(),
      appBar: AppBar(
        actions: [
          Padding(
            padding: EdgeInsets.all(8.0),
            child: DropdownButton(
              underline: SizedBox(),
              icon: Icon(
                Icons.language,
                color: Colors.white,
              ),
              items: AppLanguage.languageList()
                  .map<DropdownMenuItem<AppLanguage>>(
                    (lang) => DropdownMenuItem(
                      value: lang,
                      child: Row(
                        mainAxisAlignment: MainAxisAlignment.spaceAround,
                        children: [Text(lang.flag), Text(lang.name)],
                      ),
                    ),
                  )
                  .toList(),
              onChanged: (AppLanguage language) {
                _changeLanguage(language);
              },
            ),
          )
        ],
        centerTitle: true,
        //automaticallyImplyLeading: false,
        title: Text(
          getTranslation(context, 'main_app_bar'),
          style: TextStyle(
            fontSize: 20,
          ),
        ),
      ),
      body: Center(
        child: SafeArea(
          child: Column(
            children: <Widget>[
              Expanded(
                flex: 1,
                child: WeatherWidget(
                  deglaPalmsWeatherData: widget.deglaPalmsWeather,
                ),
              ),
              Expanded(
                flex: 1,
                child: Column(
                  children: [
                    Expanded(
                      flex: 2,
                      child: Row(
                        children: [
                          SizedBox(
                            width: 20,
                          ),
                          Expanded(
                            flex: 1,
                            child: MapWidget(),
                          ),
                          SizedBox(
                            width: 10,
                          ),
                          Expanded(
                            flex: 1,
                            child: ServicesWidget(),
                          ),
                          SizedBox(
                            width: 20,
                          )
                        ],
                      ),
                    ),
                    Expanded(
                      flex: 2,
                      child: Row(
                        children: [
                          SizedBox(
                            width: 20,
                          ),
                          Expanded(
                            flex: 1,
                            child: InfoWidget(),
                          ),
                          SizedBox(
                            width: 10,
                          ),
                          Expanded(
                            flex: 1,
                            child: BusWidget(),
                          ),
                          SizedBox(
                            width: 20,
                          ),
                        ],
                      ),
                    ),
                    Expanded(
                      flex: 1,
                      child: SoonWidget(),
                    ),
                  ],
                ),
              ),
              DCCopyRights(),
            ],
          ),
        ),
      ),
      bottomNavigationBar: Container(
        height: bannerHeight,
      ),
    );
  }

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,它对我来说效果很好,我使用了带有 scrollDirection 和 pageSnapping 的 PageView

PageView(
         scrollDirection: Axis.vertical,
         pageSnapping: false,
         children: [Column(),
                    Column()])

我不得不重新调整小部件以适应所有屏幕,但这对我来说效果很好,因为我添加了很多小部件,现在它看起来像一个可滚动的列。 我知道这不是最好的解决方案,但它做了我想要的。