颤音:如何定位单个vridview儿童

发布于 2025-02-13 12:26:51 字数 2246 浏览 0 评论 0原文

我有点新手,试图列出所有元素适合屏幕上的列表,并且均匀且对称地放置。我目前正在使用GridView,但我不知道如何更改单个元素的位置。更具体地说,我正在尝试更改最后一行的位置,以使其与其他行对称。

感谢任何帮助或建议!

    @override
    Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Align(
              alignment: Alignment.center,
              child: Text("Alfabeya Kurdî"),
            ),
          ),
          body: GridView.count(
            crossAxisCount: 8,
            childAspectRatio: 3 / 2,
            crossAxisSpacing: 50,
            mainAxisSpacing: 100,
            children: List.generate(
              (_alphabet.length - 1),
              (index) {
                const SizedBox(height: 30);
                return ClipRRect(
                  borderRadius: BorderRadius.circular(10),
                  child: Stack(
                    children: <Widget>[
                      Positioned.fill(
                        child: Container(
                          decoration: const BoxDecoration(
                            gradient: LinearGradient(
                              colors: <Color>[
                                Color(0xFF0D47A1),
                                Color(0xFF1976D2),
                                Color(0xFF42A5F5),
                              ],
                            ),
                          ),
                        ),
                      ),
                      Align(
                        alignment: Alignment.bottomCenter,
                        child: TextButton(
                          style: TextButton.styleFrom(
                            padding: const EdgeInsets.all(16.0),
                            primary: Colors.white,
                            textStyle: const TextStyle(fontSize: 20),
                          ),
                          onPressed: () {},
                          child: Text(_alphabet[index]),
                        ),
                      ),
                    ],
                  ),
                );
              },
            ),
          ),
        );
      }

这就是我的GridView当前看起来

“”

I am kind of new to flutter and am trying to make a list where all the elements fit on the screen and are evenly and symmetrically placed. I am currently using GridView, but I can't figure out how to change the position of the individual elements. More specifically, I am trying to change the position of the last row so it's symmetrical with the other rows.

Any help or suggestions are appreciated!

    @override
    Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Align(
              alignment: Alignment.center,
              child: Text("Alfabeya Kurdî"),
            ),
          ),
          body: GridView.count(
            crossAxisCount: 8,
            childAspectRatio: 3 / 2,
            crossAxisSpacing: 50,
            mainAxisSpacing: 100,
            children: List.generate(
              (_alphabet.length - 1),
              (index) {
                const SizedBox(height: 30);
                return ClipRRect(
                  borderRadius: BorderRadius.circular(10),
                  child: Stack(
                    children: <Widget>[
                      Positioned.fill(
                        child: Container(
                          decoration: const BoxDecoration(
                            gradient: LinearGradient(
                              colors: <Color>[
                                Color(0xFF0D47A1),
                                Color(0xFF1976D2),
                                Color(0xFF42A5F5),
                              ],
                            ),
                          ),
                        ),
                      ),
                      Align(
                        alignment: Alignment.bottomCenter,
                        child: TextButton(
                          style: TextButton.styleFrom(
                            padding: const EdgeInsets.all(16.0),
                            primary: Colors.white,
                            textStyle: const TextStyle(fontSize: 20),
                          ),
                          onPressed: () {},
                          child: Text(_alphabet[index]),
                        ),
                      ),
                    ],
                  ),
                );
              },
            ),
          ),
        );
      }

This is what my GridView currently looks like

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦断已成空 2025-02-20 12:26:51

您可以使用带有对齐属性的包装小部件

@override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Align(
            alignment: Alignment.center,
            child: Text("Alfabeya Kurdî"),
          ),
        ),
        body: SizedBox(
          width: MediaQuery.of(context).size.width,
          child: Wrap(
            alignment: WrapAlignment.center,
            direction: Axis.horizontal,
            runSpacing: 10,
            spacing: 50,
            children: List.generate(
              26,
              (index) => Container(
                  height: 60,
                  width: 50,
                  decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(5),
                    gradient: const LinearGradient(
                      colors: <Color>[
                        Color(0xFF0D47A1),
                        Color(0xFF1976D2),
                        Color(0xFF42A5F5),
                      ],
                    ),
                  ),
                  child: Align(
                    alignment: Alignment.bottomCenter,
                    child: TextButton(
                      style: TextButton.styleFrom(
                        padding: const EdgeInsets.all(10.0),
                        primary: Colors.white,
                        textStyle: const TextStyle(fontSize: 20),
                      ),
                      onPressed: () {},
                      child: Text('$index'),
                    ),
                  )),
            ),
          ),
        ));
  }

“

You can use a wrap widget instead which has alignment property

@override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Align(
            alignment: Alignment.center,
            child: Text("Alfabeya Kurdî"),
          ),
        ),
        body: SizedBox(
          width: MediaQuery.of(context).size.width,
          child: Wrap(
            alignment: WrapAlignment.center,
            direction: Axis.horizontal,
            runSpacing: 10,
            spacing: 50,
            children: List.generate(
              26,
              (index) => Container(
                  height: 60,
                  width: 50,
                  decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(5),
                    gradient: const LinearGradient(
                      colors: <Color>[
                        Color(0xFF0D47A1),
                        Color(0xFF1976D2),
                        Color(0xFF42A5F5),
                      ],
                    ),
                  ),
                  child: Align(
                    alignment: Alignment.bottomCenter,
                    child: TextButton(
                      style: TextButton.styleFrom(
                        padding: const EdgeInsets.all(10.0),
                        primary: Colors.white,
                        textStyle: const TextStyle(fontSize: 20),
                      ),
                      onPressed: () {},
                      child: Text('$index'),
                    ),
                  )),
            ),
          ),
        ));
  }

preview

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文