【问题标题】:Align first widget of Flutter's scrollview initially centeric but all following selected widgets also in the center将 Flutter 滚动视图的第一个小部件最初居中对齐,但随后所有选定的小部件也居中对齐
【发布时间】:2019-01-06 10:50:35
【问题描述】:

我想要达到的目标

我想让 ScrollView 的第一个小部件最初居中。但是如果滚动视图被滚动,滚动视图应该与父视图具有相同的宽度,并且居中的小部件应该是选定的。

接近

我的第一个想法是使用initialScrollOffset 属性。但这似乎没有任何效果。

@override
  Widget build(BuildContext context) {
    return ListView(
      scrollDirection: Axis.horizontal,
      children: _buildCarouselItems(),
      itemExtent: FrettirConstants.cardWidth,
      controller: new ScrollController(
          debugLabel: "Carousel",
          initialScrollOffset: -200,
        keepScrollOffset: true
      ),
    );
  }

草图

【问题讨论】:

    标签: dart flutter scrollview


    【解决方案1】:

    这听起来像是一个不好的做法,但您可以将一个空的 Container 添加到第一个位置,该容器的宽度是其他轮播小部件的 3/4。

    在我的虚拟代码中,每个轮播小部件的长度为 160,而空容器必须有 3/4 的其他小部件。这样,第一个轮播小部件是完全可见的,而第二个是 3/4 可见性。

    Container(
      width: 160.0 * 3 / 4,
      color: Colors.transparent,
    ),
    Container(
      margin: EdgeInsets.only(
        right: 10.0
      ),
      width: 160.0,
      color: Colors.red,
    ),
    Container(
      margin: EdgeInsets.symmetric(
          horizontal: 10.0
      ),
      width: 160.0,
      color: Colors.blue,
    ),
    

    【讨论】:

    • 感谢您的快速帮助。我会将此答案标记为有帮助,但不会在 答案 处标记。希望能有更“合适”的方式来实现。
    • 是的,这不是一个正确的答案或解决方案。我希望这不会成为您项目的障碍。
    • 不,当然不是。你帮助保持“进步”。我可以稍后重新讨论这个问题。感谢您的帮助!
    猜你喜欢
    • 2023-01-26
    • 2023-02-06
    • 1970-01-01
    • 2015-12-08
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2021-03-13
    相关资源
    最近更新 更多