более одного GridView в одном столбце и прокручивать их вместе - PullRequest
0 голосов
/ 25 апреля 2020

[Picture1 [Picture 2 Picture 3] Я пытался построить два GridView в стеке, но невозможно прокрутить их вместе. То, что я хочу, это встроить в GridView Stack много GridView и прокрутить их вместе, пожалуйста, помогите мне. Я попытался построить два GridView в стеке, но невозможно прокрутить их вместе. Что я хочу, так это встроить GridView в один стек и прокрутить их вместе. 1007 * Вот мой исходный код.

Пожалуйста, помогите!


class JourneyGrid extends StatefulWidget {
  @override
  _JourneyGridState createState() => _JourneyGridState();
}

class _JourneyGridState extends State<JourneyGrid> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          Column(
            children: <Widget>[
              GridView.count(
                shrinkWrap: true,
                crossAxisCount: 1,
                children: <Widget>[
                  createGridItemChauffeur(1),
                ],
              ),
              GridView.count(
                shrinkWrap: true,
                crossAxisCount: 3,
                children: <Widget>[
                  createGridItemCoteChauffeur(1),
                  createGridItemCoteChauffeur(2),
                  createGridItemCoteChauffeur(3),
                  createGridItemCoteChauffeur(4),
                  createGridItemCoteChauffeur(5),
                  createGridItemCoteChauffeur(6),
                  createGridItemCoteChauffeur(7),
                  createGridItemCoteChauffeur(8),
                  createGridItemCoteChauffeur(9),
                  createGridItemCoteChauffeur(10),
                  createGridItemCoteChauffeur(11),

                ],
              ),
            ],
          ),
        ],
      ),
    );
  }




  // Create widgets

  Widget createGridItemChauffeur(int position){
    var color = Colors.white;
    var text = "";


    switch(position) {
      case 1:
        color = Colors.white;
        text = "Le conducteur";
        break;

    }

    return Builder(builder: (context) {
      return Padding(
        padding:
        const EdgeInsets.only(left: 5.0, right: 200.0, bottom: 260, top: 5),
        child: Card(
          elevation: 10,
          color: color,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.all(Radius.circular(10)),
            side: BorderSide(color: Colors.white),
          ),
          child: InkWell(
            onTap: () {
              //gestion du pupop text
              //showPopup(context, _popupBody(condition, niveau, document, pension, Inscription, PremiereTranche, DeuxiemeTranche, TroisiemeTranche, Total), '$text');
            },
            child: Center(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Text(text,
                      style: TextStyle(color: Colors.black),
                    ),
                  )
                ],
              ),
            ),
          ),
        ),
      );
    });
  }





  Widget createGridItemCoteChauffeur(int position){
    var color = Colors.white;
    var text = "";


    switch(position) {
      case 1:
        color = Colors.green;
        text = "Le conducteur";
        break;

      case 2:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 3:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 4:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 5:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 6:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 7:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 8:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 9:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 10:
        color = Colors.white;
        text = "Le conducteur";
        break;

      case 11:
        color = Colors.white;
        text = "Le conducteur";
        break;

    }

    return Builder(builder: (context) {
      return Padding(
        padding:
        const EdgeInsets.only(left: 5.0, right: 50.0, bottom: 20, top: 5),
        child: Card(
          elevation: 10,
          color: color,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.all(Radius.circular(10)),
            side: BorderSide(color: Colors.white),
          ),
          child: InkWell(
            onTap: () {
              //gestion du pupop text
              //showPopup(context, _popupBody(condition, niveau, document, pension, Inscription, PremiereTranche, DeuxiemeTranche, TroisiemeTranche, Total), '$text');
            },
            child: Center(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Text(text,
                      style: TextStyle(color: Colors.black),
                    ),
                  )
                ],
              ),
            ),
          ),
        ),
      );
    });
  }

}


1 Ответ

0 голосов
/ 25 апреля 2020

оберните их внутри Expanded и используйте List.generate для создания списков для вас:

body: Stack(
          children: <Widget>[
            Column(
              children: <Widget>[
                Expanded(
                  child: GridView.count(
                    shrinkWrap: true,
                    crossAxisCount: 1,
                    children: List.generate(1, (index) {
                      return Text(
                        'grid1, item$index',
                        style: TextStyle(fontSize: 30),
                      );
                      //return createGridItemChauffeur(index+1);
                    }),
                  ),
                ),
                Expanded(
                  child: GridView.count(
                    shrinkWrap: true,
                    crossAxisCount: 3,
                    children: List.generate(10, (index) {
                      return Text(
                        'grid2, item$index',
                        style: TextStyle(fontSize: 30),
                      );
                      //return createGridItemChauffeur(index+1);
                    }),
                  ),
                ),
              ],
            ),
          ],
        ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...