flutter - 我不能在ScrollView中使用GridView,而只能在我展开时​​使用GridView。如何在Page中添加真正的ScrollView?

标签 flutter gridview dart flutter-layout

class MyHome extends StatefulWidget {
  @override
  _MyHomeState createState() => _MyHomeState();
}

class _MyHomeState extends State<MyHome> {

  GlobalKey<ScaffoldState> _scaffold = GlobalKey<ScaffoldState>();
  bool _data = false;

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      key: _scaffold,
      drawer: Menu(),
      appBar: AppBar(
          leading: SvgPicture.asset('assets/images/sirket-amblem.svg', width: 10.0,), 
          centerTitle: true,title: Text('Anasayfa', style: TextStyle(color: Colors.indigo, fontWeight : FontWeight.w700,),),
          actions: <Widget>[
              IconButton(
                onPressed: () {
                  _scaffold.currentState.openDrawer();
                },
                icon: Icon(Icons.menu, 
                color: Colors.indigo,),),

              IconButton( onPressed: () {
                  _data = false;
                  setState(() {});
                  AncWidget.of(context).transaction.request().then((request){
                    _data = request;
                    setState(() {});
                  });
                },
                icon: Icon(Icons.refresh, 
                color: Colors.indigo,),)
          ],
          ),
      body: _data 
          ? Container(
              child : SingleChildScrollView(child: Column (
                  mainAxisAlignment: MainAxisAlignment.start,
                  children:[
                    Container(
                      height: 200.0,
                      width: double.maxFinite,
                      child: MainSlider(), ),
                      Padding(
                            padding: EdgeInsets.only(top: 15.0), 
                            child : Image.asset('assets/images/main_chart.png', width: 500.0, height: 222.0,),),
                     GridView.count(
                          crossAxisCount: 3,
                          mainAxisSpacing: 9.0,
                          crossAxisSpacing: 9.0,
                          childAspectRatio: 1.2,



                          physics: NeverScrollableScrollPhysics(),
                          padding: const EdgeInsets.only(left: 20.0, right: 20.0, top: 10.0, bottom: 0.0),
                          children: List.generate(choices.length, (index) {
                              return Center(
                                child: ChoiceCard(choice: choices[index]),                
                              );
                          }
                          )
                    )  
                    ], 
                )

                ,)  
          ) 
      : Center(child: CircularProgressIndicator(),),     
    ); 
  } 
} 


class Choice {
  const Choice ({this.title, this.icon});

  final String title;
  final String icon;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'YÖNETİM', icon: 'assets/images/icons/menu/kurumsal.svg'),
  const Choice(title: 'SENET', icon: 'assets/images/icons/menu/hisse-senedi.svg'),
  const Choice(title: 'FİNANSAL', icon: 'assets/images/icons/menu/finansal-raporlar.svg'),

  ];

class ChoiceCard extends StatelessWidget {
  const ChoiceCard({Key key, this.choice}) : super(key: key);
  final Choice choice;

  @override
  Widget build(BuildContext context) {
        return Card(
          color: Color(0xFFE6E8F0), 
          child: Center(child: Column( 
              mainAxisSize: MainAxisSize.min,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: <Widget>[
                Expanded(child: SvgPicture.asset(choice.icon, color: Color(0xFF324684), width: 35.0,)),
                Padding(padding: EdgeInsets.only(left: 7.0, right: 7.0, bottom: 9.0), child : Text(choice.title ,style: TextStyle(fontSize: 10.0, color: Color(0xFF324684), fontFamily: 'ProximaNova-Regular', fontWeight: FontWeight.w700), textAlign: TextAlign.center,)),
          ]
        ),
      )
    );
  }
}


//(Another Code (working but no scrollView. I need ScrollView))
/*
Expanded(
                        child :Container(
                      height: 200.0,
                      width: double.maxFinite,
                      child: MainSlider(), 
                    ),
                      ),
                    Expanded(
                        child : Padding(
                            padding: EdgeInsets.only(top: 15.0), 
                            child : Image.asset('assets/images/main_chart.png', width: 500.0, height: 222.0,),)
                      ),
                    //Padding(padding: EdgeInsets.only(top: 10.0),),
                    Expanded(
                        child : GridView.count(
                          crossAxisCount: 3,
                          mainAxisSpacing: 9.0,
                          crossAxisSpacing: 9.0,
                          childAspectRatio: 1.2,

                          physics: NeverScrollableScrollPhysics(),
                          padding: const EdgeInsets.only(left: 20.0, right: 20.0, top: 10.0, bottom: 0.0),
                          children: List.generate(choices.length, (index) {
                              return Center(
                                child: ChoiceCard(choice: choices[index]),                
                              );
                          }
                          )
                    )  
                      ),
*/


我想在Flutter中添加ScrolView,但是我有GridView。拥有GridView后,如何在Page中添加ScrollView?我为ButtonList创建了GridView来喜欢myhome页面中的菜单。


.  .  .
.  .  .
.  .  .

像表格,像GridView。

最佳答案

您在physics: NeverScrollableScrollPhysics(),中使用GridView.count,但是在SinngleChildScrollView中使用ListView或GridViewCount时必须使用physics: ClampingScrollPhysics(), physics: ClampingScrollPhysics(),启用了平滑滚动,并且您也错过了shrinkWrap: true,中的GridView.countGridView.count中添加了两项

关于flutter - 我不能在ScrollView中使用GridView,而只能在我展开时​​使用GridView。如何在Page中添加真正的ScrollView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59748153/

相关文章:

Flutter ListView 不会更新

dart - 如何在 Dart 中使用 PI 常数

.net - 使用自动换行修复 Gridview 列的宽度

asp.net - GridView Dropdownlist CSS 首字母应为黑色,其余内容应为绿色

Dart 的 DirectoryEntry.getFile 带有 'options' 参数抛出 NoSuchMethodError

android - 如何以编程方式将列表小部件添加到 TabBar?

firebase - Flutter Firebase onAuthStateChanged

android - 如何返回Future <object>并将其分配给object,flutter

flutter - 如何在本地使用flutter插件?

user-interface - Flutter - 如何在 AlertDialog 框中显示 GridView?