在Flutter的ListView.builder中添加RTL水平布局

6

我正在尝试让ListView.builder从右向左进行水平滚动。

我的代码:

SliverToBoxAdapter(
  child: Container(
    height: MediaQuery.of(context).size.height / 4.5,
    margin: const EdgeInsets.only(bottom: 5.0, top: 10.0),
    child: ListView.builder(
      scrollDirection: Axis.horizontal,
      itemCount: list.length,
      itemBuilder: (BuildContext context, int index) {
        return InkWell(/* ... */)
      }
    ),
  ),
);
3个回答

9

您只需将 "reverse" 参数添加到 ListView 中。

以下是一个示例:

ListView.builder(
    reverse: true,
    scrollDirection: Axis.horizontal,
    itemCount: list.length,
    itemBuilder: (context, position) {
      return Padding(
        padding: const EdgeInsets.all(8.0),
        child: Container(
          child: Text(list[position]),
          color: Colors.grey,
          height: 10,
          width: 10,
        ),
      );
    },
  )

你还在寻找答案吗? - satish
你是什么意思?我只是回答了@satish的问题。 - Basel Abuhadrous
@BaselAbuhadrous 非常感谢,它的工作是反向的:true。 - Mikel Tawfik
那就是我在问的,通过Basel Abuhadrous给出的解决方案是否有效? - satish
它对我不起作用... '-' - user19924837
我认为我应该像往常一样参考我的代码。 - user19924837

0

最好的方法是使用Directionality小部件将您的ListView包装起来,使用TextDirection.rtl,就像以下代码一样

Directionality(
   textDirection: TextDirection.rtl,
   child: ListView.builder(
      scrollDirection: Axis.horizontal,
      itemCount: list.length,
      itemBuilder: (BuildContext context, int index) {
         return InkWell(/* ... */)
      }
   ),
);

0

水平

ListView.builder(
    reverse: true,
    scrollDirection: Axis.horizontal,

针对垂直方向

ListView.builder(
    reverse: true,
    scrollDirection: Axis.vertical,

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接