Flutter动态高度的网格视图

huangapple go评论66阅读模式
英文:

Flutter dynamic height gridview

问题

我想创建一个具有最多2列的网格视图的笔记应用程序,每个笔记(容器)都将具有动态高度。也就是说,如果笔记中的内容非常短(<50个字符),它应该比另一个具有更多字符的笔记具有较短的高度。示例截图如下:

示例截图

英文:

I want to build a notes app that has a gridview with max 2 columns, and each note (container) will have a dynamic height. Meaning, if the content in the note is very short <50 characters, it should have a shorter height compared to another note which has more characters. Example screenshot below:

Sample screenshot

答案1

得分: 1

以下是翻译好的代码部分:

尝试以下代码:

添加以下包:

flutter_staggered_grid_view: ^0.6.2

以下是需要显示的字符串列表:

List<String> items = [
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco labori",
    "i ut aliquip ex ea commodo consequat. Duis aute irure dolor in rep",
    " dolor sit amet, consectetur adipiscing elit, sed do eiusmod tem",
    "liquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in ",
    "lpa qui officia deserunt mollit anim id est laborum.",
    "eniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
    "unt ut labore et dolore magna aliqua. Ut enim ad minim veniam, q",
    "t in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
    "sfgdf",
    "i ut aliquip ex ea commodo consequat. Duis aute irure dolor in rep",
    " dolor sit amet, consectetur adipiscing elit, sed do eiusmod tem",
    "liquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in ",
    "lpa qui officia deserunt mollit anim id est laborum.",
    "eniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
    "unt ut labore et dolore magna aliqua. Ut enim ad minim veniam, q",
    "t in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
    "sfgdf",
];

以下是构建视图的示例:

SingleChildScrollView(
    child: Container(
        color: Colors.grey,
        margin: EdgeInsets.all(12),
        child: StaggeredGrid.count(
            crossAxisCount: 2,
            crossAxisSpacing: 10,
            mainAxisSpacing: 12,
            children: items
                .map((item) => Container(
                    padding: const EdgeInsets.all(10),
                    decoration: const BoxDecoration(
                        color: Colors.white,
                        borderRadius: BorderRadius.all(Radius.circular(15))),
                    child: Text(item),
                ))
                .toList(),
        ),
    ),
)

它将如下所示:

Flutter动态高度的网格视图

英文:

Try below code:

Add below package :

 flutter_staggered_grid_view: ^0.6.2

Below are the list of strings that needs to display

List&lt;String&gt; items = [
    &quot;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco labori&quot;,
    &quot;i ut aliquip ex ea commodo consequat. Duis aute irure dolor in rep&quot;,
    &quot; dolor sit amet, consectetur adipiscing elit, sed do eiusmod tem&quot;,
    &quot;liquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in &quot;,
    &quot;lpa qui officia deserunt mollit anim id est laborum.&quot;,
    &quot;eniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;,
    &quot;unt ut labore et dolore magna aliqua. Ut enim ad minim veniam, q&quot;,
    &quot;t in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;,
    &quot;sfgdf&quot;,
    &quot;i ut aliquip ex ea commodo consequat. Duis aute irure dolor in rep&quot;,
    &quot; dolor sit amet, consectetur adipiscing elit, sed do eiusmod tem&quot;,
    &quot;liquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in &quot;,
    &quot;lpa qui officia deserunt mollit anim id est laborum.&quot;,
    &quot;eniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;,
    &quot;unt ut labore et dolore magna aliqua. Ut enim ad minim veniam, q&quot;,
    &quot;t in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&quot;,
    &quot;sfgdf&quot;,
  ];

Below is the sample of build view

SingleChildScrollView(
          child: Container(
            color: Colors.grey,
            margin: EdgeInsets.all(12),
            child: StaggeredGrid.count(
              crossAxisCount: 2,
              crossAxisSpacing: 10,
              mainAxisSpacing: 12,
              children: items
                  .map((item) =&gt; Container(
                padding: const EdgeInsets.all(10),
                        decoration: const BoxDecoration(
                            color: Colors.white,
                            borderRadius: BorderRadius.all(Radius.circular(15))),
                        child: Text(item),
                      ))
                  .toList(),
            ),
          ),
        )

It will look like this,

Flutter动态高度的网格视图

huangapple
  • 本文由 发表于 2023年6月21日 23:37:40
  • 转载请务必保留本文链接:https://go.coder-hub.com/76525003.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定