首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在flutter的水平列表视图中将屏幕上选定的项目居中?

在Flutter的水平列表视图中将屏幕上选定的项目居中,可以通过以下步骤实现:

  1. 首先,使用Flutter的ListView.builder构建水平列表视图,该构造方法允许按需生成列表项。
  2. 在ListView.builder的itemBuilder回调中,创建列表项。每个列表项都应该是一个可点击的组件,例如GestureDetector。
  3. 在列表项的点击事件处理程序中,获取选定的项目的索引。
  4. 使用Flutter的ScrollController控制器,将列表视图滚动到选定项目的位置。可以使用ScrollController的animateTo方法来平滑滚动,也可以使用jumpTo方法进行快速滚动。

以下是一个示例代码,展示如何在Flutter的水平列表视图中将屏幕上选定的项目居中:

代码语言:txt
复制
import 'package:flutter/material.dart';

class MyList extends StatefulWidget {
  @override
  _MyListState createState() => _MyListState();
}

class _MyListState extends State<MyList> {
  ScrollController _controller = ScrollController();
  int _selectedIndex = 0;

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      scrollDirection: Axis.horizontal,
      controller: _controller,
      itemCount: 10,
      itemBuilder: (context, index) {
        return GestureDetector(
          onTap: () {
            setState(() {
              _selectedIndex = index;
              _scrollToSelectedIndex();
            });
          },
          child: Container(
            width: 100,
            height: 100,
            color: _selectedIndex == index ? Colors.blue : Colors.grey,
            child: Center(
              child: Text(
                'Item $index',
                style: TextStyle(color: Colors.white),
              ),
            ),
          ),
        );
      },
    );
  }

  void _scrollToSelectedIndex() {
    double offset = (_selectedIndex * 100) - (MediaQuery.of(context).size.width / 2);
    _controller.animateTo(
      offset,
      duration: Duration(milliseconds: 500),
      curve: Curves.ease,
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: Text('Centered ListView')),
      body: Center(child: MyList()),
    ),
  ));
}

在这个示例代码中,我们创建了一个水平的ListView.builder,并为每个列表项添加了点击事件处理程序。当点击某个列表项时,它会更新选定项目的索引,并调用_scrollToSelectedIndex方法来将该项目居中。_scrollToSelectedIndex方法通过计算偏移量,并使用ScrollController的animateTo方法来实现滚动效果。

这个示例中使用的是Flutter的基础组件来实现居中滚动的效果。如果想要更高级的功能,例如加载网络图片或处理复杂的布局,请查看Flutter的相关文档和教程。

希望这个示例对你有帮助!如果需要更多关于Flutter或其他云计算领域的专业知识,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ConstraintLayout2.0一篇写不完之Carousel

视图,显示用户可以浏览元素列表。...与实现此类视图其他解决方案相比,Carousel可以利用MotionLayout迅速为轮播创建复杂动画效果。 Carousel支持带有开始和结束列表以及循环环绕列表。...概念:轮播如何MotionLayout工作 假设我们要构建一个简单水平轮播视图,并放大一个居中视图: 我们基本布局包含几个视图,代表了我们轮播项目: 通过MotionLayout创建具有三个状态...例如,假设我们有5个视图:处于开始状态A,B,C,D,E。 start时,B,C,D可见,而A和E在屏幕外。...这种无限轮播错觉方式,实际是将实际视图移回它们位置,然后使用新匹配内容将其重新初始化。

1.4K20

Flutter 视图布局-前言

01 - 视图布局方式 简单说一下我对 Flutter 视图布局看法,在前篇中我有提到 Flutter 是使用了 Dart 语言进行编写,所以弱化了视图编辑部分,视图渲染、结构、布局都通过代码逻辑来生成...此外在官方文档术语描述中将2个 Widget  嵌套关系为 Widget 下子 Widget,这不便于一些已经学过 html 或 xml 少侠们理解,故在此约定: 约定 在接下来 《Flutter...多子类元素布局 多子类元素布局 Widget 有10种: Row 在水平方向上排列子元素列表。 Column 在垂直方向上排列子元素列表。...CustomSingleChildLayout 一个自定义拥有单个子元素布局 Widget。 每一种 Widget 都会影响其子元素最终视图显示效果,大小、位置、边框、背景等。...此外我还考虑为了方便各位少侠小伙伴们更直观学习和参考,我还将 Flutter 系列 MyApp 项目同步到了 Github ,以后如有文章更新都会将文章内代码同步更新到 Github 项目里。

2.3K110
  • 使用 Android Studio 进行 Flutter 开发

    本文将与你一起回顾如何在 Android Studio 里进行 Flutter 工具配置。 创建项目 你可以通过多种方式来创建新项目。 ?...” 找到选择目标下拉按钮,点击它会显示出可用设备列表。 选择你希望启动应用设备。当连接设备或启动模拟器时, 列表中将会加入新选项。...可将 UI 拆分成多个具有较轻量 build() 方法 widget。 未在屏幕显示 widget 发生了重载。...例如,一个延伸到屏幕 ListView,或者未给延伸到屏幕列表设置 RepaintBoundary,会导致重绘整个列表。...在进行操作之前,请确保你使用是最新版本 Android Studio 和 Flutter 插件。 在“项目视图”中,你可以在 flutter 应用根目录下看到一个 android 子目录。

    6.2K30

    Flutter 旋转轮

    它显示了如何在flutter应用程序中使用「flutter_spinwheel」软件包运行「旋转轮」,并显示了当您点击该项目时,旋转器将移动。同样,您将沿顺时针/逆时针任何方向移动微调器。...它将在您设备显示所选文本。...自旋轮有一些功能: 自动播放(启用/禁用) 长按以暂停(启用/禁用) 尺寸调整 文字/图片支持 图像调整支持 顺时针和逆时针平移进行导航 触摸即可在先前平移方向上导航 绘画定制以改变外观 回调功能通知选定项目...我们将创建由名称选择给出动态列表列表。同样,我们将创建一个由名称select给定整数。...当我们运行应用程序时,我们应该获得屏幕输出,屏幕下方截图所示。

    8.8K20

    6详解AppBar小部件

    由于它是一个如此常用组件,因此 Flutter 为该功能提供了一个名为AppBar专用小部件。 在本教程中,我们将通过一些实际示例向您展示如何在 Flutter 应用程序中自定义 AppBar。...Flutter AppBar 是根据Material Design指南构建应用程序组件。它通常位于屏幕顶部,并且能够在其布局中包含其他小部件。...), Flutter AppBar 中心标题 actions actions是与 AppBar 右侧对齐小部件列表。我们通常在用作按钮应用程序中看到它们来触发下拉菜单、个人资料头像等。...中自定义 AppBar 现在我们熟悉了 AppBar 布局,让我们通过使用主题选项将自定义提升到一个新水平。...工具栏包含文字,图标,按钮,和其他任何公司前景,除了小部件,Container和Image。

    16.3K10

    Flutter技术与实战(4)

    ListView 在 Flutter 中,ListView 可以沿一个方向(垂直或水平方向)来排列其所有子 Widget,因此常被用于需要展示一组连续视图元素场景,比如通信录、优惠券、商家列表等。...不过,这种创建方式要求提前将所有子 Widget 一次性创建好,而不是等到它们真正在屏幕需要显示时才创建,所以有一个很明显缺点,就是性能不好。因此,这种方式仅适用于列表中含有少量元素场景。...用户交互事件如何响应 手势操作在 Flutter 中分为两类: 第一类是原始指针事件(Pointer Event),即原生开发中常见触摸事件,表示屏幕触摸(或鼠标、手写笔)行为触发位移行为;...指针事件 指针事件表示用户交互原始触摸数据,手指接触屏幕 PointerDownEvent、手指在屏幕移动 PointerMoveEvent、手指抬起 PointerUpEvent,以及触摸取消...在手指接触屏幕,触摸事件发起时,Flutter 会确定手指与屏幕发生接触位置究竟有哪些组件,并将触摸事件交给最内层组件去响应。

    10.8K20

    Flutte部件目录-Material Components 顶

    底部导航栏由文本标签,图标或两者多个项目组成,并放置在一块材料顶部。 它提供了应用程序顶级视图之间快速导航。 对于更大屏幕,侧面导航可能更适合。...导航栏背景色是默认材质背景色ThemeData.canvasColor(实质是不透明白色)。 BottomNavigationBarType.shifting,有四个或更多项目默认值。...TabBarView 显示与当前选定选项卡相对应部件页面视图。 通常与TabBar结合使用。 ?...对话框,弹出框和面板 SimpleDialog 简单对话框可以提供有关列表其他详细信息或操作。 例如,他们可以显示头像图标,以阐明潜台词或正交行为(添加帐户)。 ?...GridView 网格列表由以垂直和水平布局排列单元格重复模式组成。 GridView小部件实现了这个组件。 ?

    9.5K40

    iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

    一般来说,你会在一个表格视图中使用详情展开按钮来让用户知道更多关于这个列表信息。当然你也可以将这个按钮用在其它类型视图中来为用户展示更多与特定项目相关信息和功能。...如果用户可以在你应用程序打开超过20个视图,请考虑给视图一个不同展示方式,以提供关于视图详细信息,使其支持不连续导航。 在打开视图底部边缘和屏幕底部边缘里垂直居中页面控件。...并指定适当样式(完整样式列表,请参考 Modal Presentation Styles) 模态视图: 能占据整个屏幕,它也可能占据整个父视图(parent view)区域,或者是屏幕一部分 包含完成当前任务所需文字和控件...关于这一点,你可以指定以下任意一种过渡动画: 垂直出现(Vertical).模态视图从底部边缘滑入屏幕,也同样从屏幕底部滑出(默认模式)。 弹出(Flip).当前视图从右往左水平滑动,露出模态视图。...从视觉看,模态视图好像原来就处于当前视图下面,当前视图移开时,它便出现了。离开模态视图时,原先视图从左边滑回屏幕右边。

    13.2K30

    构建实用Flutter文件列表:从简到繁完美演进

    搭建基础结构 首先,我们需要一个Flutter项目。如果你已经有了一个Flutter项目,那就太好了!...如果没有,不要担心,你可以通过命令flutter create 文件列表项目来创建一个新Flutter项目。 接下来,让我们打开项目,并找到lib文件夹。...通过以上步骤,我们已经成功创建了一个简易文件列表页面。但是列式文件列表更适合屏幕更长移动端,对于屏幕更宽桌面端,大多数网盘使用更多是网格布局来展示更多文件内容。...根据按钮点击状态,我们将显示列表视图或网格视图。 2. 构建网格视图 接下来,让我们来实现网格视图布局。我们可以使用FlutterGridView组件来展示文件列表。...现在,我们文件列表已经可以动起来了!(GIF动不了啊)(又可以动了) 总结 在本文中,我们详细探讨了如何在Flutter应用中构建文件列表,并逐步改进和优化这个文件列表,以提升用户体验和功能性。

    22111

    Flutter中构建布局 顶

    Flutter布局机制如何工作。 如何垂直和水平布局小部件。 如何构建一个Flutter布局。 这是在Flutter中构建布局指南。 您将构建以下屏幕截图布局: ?...然后本指南回过头来解释Flutter布局方法,并说明如何在屏幕放置一个小部件。 在讨论如何水平和垂直放置小部件之后,会介绍一些最常见布局小部件。...如果您愿意,可以构建仅使用小部件库中标准小部件应用程序。 如何在Flutter中布置单个小部件? 本节介绍如何创建一个简单小部件并将其显示在屏幕。...它还显示了一个简单Hello World应用程序完整代码。 在Flutter中,只需几个步骤即可在屏幕放置文本,图标或图像。 1.选择一个布局小部件来保存该对象。...(平板电脑)上水平运行效果最佳。

    43.1K10

    提高效率 |ArcGIS Pro 中所有快捷键一网打尽

    Tab 键或 Shift+Tab 在功能区、窗格、视图或对话框上命令或项目之间移动。 箭头键或下箭头键 在列表元素之间移动。 Alt + 下箭头键 打开下拉菜单或下拉列表。...Ctrl+L 当布局为活动视图时,锁定或解锁在内容窗格中选择项目。 Ctrl+Shift+L 当布局为活动视图时,请在内容窗格中锁定或解锁该级别上所有项目。...Alt+单击图层名称 缩放至该图层范围。 Delete 删除在内容窗格中选择项目。 Ctrl+T 打开图层表或内容窗格中选定表。 编辑 以下键盘快捷键适用于各种编辑操作和工具。...选定了观察点视线 选定了观察点时视线键盘快捷键 键盘快捷键 操作 A 逆时针旋转。 D 顺时针旋转。 Ctrl + 箭头 将观察点移动至远离场景照相机位置。...选定了目标的视线 选定了目标时视线键盘快捷键 键盘快捷键 操作 Ctrl + 箭头 将目标移动至远离照相机位置。 Ctrl + 下箭头 将目标向照相机方向移动。

    1.1K20

    Flutter 视图布局(一)

    调用获取有限不可更改数据列表值就Ok,免去了输入字符串可能导致字符不匹配问题。...轴线对齐方式 start 默认值,即 Row 主轴左对齐,Column 主轴顶部对齐 end 即 Row 主轴右对齐,Column 主轴底部对齐 center 即 Row 主轴上水平居中对齐,Column...(副)轴垂直居中对齐,Column 交叉(副)轴水平居中对齐 stretch 将 Row 子元素拉伸至交叉(副)轴高度相同,Column 子元素拉伸至交叉(副)轴宽度相同 baseline 需要与...stretch 就是以交叉(副)轴为基础,将交叉(副)轴子元素拉伸至与交叉(副)轴所占空间相同,但又不影响主轴方向空间。 以上就是影响主轴、交叉(副)轴最终渲染视图主要属性了。.../layout/ 相关文章 Flutter 视图布局-前言 Flutter Hello World Flutter State x Widget 感谢大家喜欢!

    2.6K61

    经典布局:如何定义子控件在父容器中排版位置?

    在之前文章中,我们一起学习了构建视图基本元素,文本Text、图片Image和按钮,用于展示一组连续视图元素ListView,以及处理多重嵌套可滚动视图CustomScrollView,等等。...而我们要做就是,通过各种定制化参数,将其内部子Widget按照自己布局规则放置在特定位置,最终形成一个漂亮布局。...在需要设置内容间距时,我们可以通过EdgeInsets不同构造函数,分别制定四个方向不同补白方式,均使用同样数值留白(EdgeInsets.all),只设置左留白(EdgeInsets.only)...如同AndroidLinearLayout、前端Flex布局一样,Flutter中也有类似的概念,即将子Widget按行水平排列Row,按列垂直排列Column,以及负责分配这些子Widget在布局方向中剩余空间...需要注意是,对于主轴而言,Flutter默认是让父容器决定其长度,即尽可能大。 在上例中,Row宽度为屏幕宽度,Column高度为屏幕高度。

    4.6K30

    Flutter 视图布局(二)

    ,默认为 false,为 true 则 垂直方向从底部开始,水平方向从右边开始 bool primary 是否是主主要滚动 Widget,默认为 false, 如果为 true 则 controller...cacheExtent 在视图可见区域之外有一个区域(即垂直是上下部分,水平是左右部分),用于缓存滚动即进入可见区域子类。...在默认情况下,如果列表子元素不足以超出可视范围则不会产生可滚动行为。超出可视范围则到达列表尽头时会停留并有水波样式出现。...最后总结 flutter 基本为你考虑了一些相关场景使用实现,所以可以很方便使用这些内容,但是考虑过细自然也就会觉得需要了解内容就过多。...-前言 Flutter 视图布局(一) 感谢大家喜欢!

    3K10

    Flutter布局基础——Column竖直布局

    Flutter布局基础——Column竖直布局 Column-是竖直方向布局子视图Widget,和Row相似,如果想要子视图充满,可使用Expanded把子视图包括起来。 <!...: 水平居中布局,默认为这个 CrossAxisAlignment.stretch CrossAxisAlignment.baseline 下面一个个来看: textDirection效果: 代码如下:...Ps:需要注意是CrossAxisAlignment.center效果,不是想象中,整个屏幕宽度居中对齐。而实际是和最长视图宽度然后居中对齐。...,设置mainAxisSize为min 与max不同,设置max可以看到按照全屏幕来适配,设置min则无效果。...需要注意:二 和Row类似,当子视图内容超出了父视图区域时,Flutter在Debug模式下,会显示黄色提示。效果如下: <!

    1.6K50

    探索 Flutter NavigationRail:使用详解

    介绍 在 Flutter 中,NavigationRail 是一个垂直导航栏组件,用于在应用程序中提供导航功能。它通常用于更大屏幕空间设备,平板电脑和桌面应用程序。...安装和设置 在 Flutter 项目中使用 NavigationRail 非常简单,您只需按照以下步骤进行安装和设置即可: 添加依赖项: 在您 Flutter 项目的 pubspec.yaml 文件中添加...Flutter 项目中了。...以下是在不同屏幕尺寸响应式地使用 NavigationRail 一些最佳实践: 6.1 适应平板电脑、桌面和移动设备最佳实践 使用媒体查询: 使用 MediaQuery 来检测当前设备屏幕尺寸和方向...响应式设计: 应用程序可以根据不同设备屏幕尺寸和方向来调整 NavigationRail 布局和样式,以确保在各种设备提供一致用户体验。

    47910

    鸿蒙应用开发-初见:ArkUI

    声明式布局几乎都是下面这个套路父视图给子视图一个布局约束(作为Root视图默认是充满屏幕,它给子视图约束就是屏幕大小)子视图渲染并将自身大小返回给父视图视图根据子视图大小和设定对齐方式计算要放置位置子视图布局也遵循以上三步进行递归...ArkTS写完页面描述后,交给语言运行时进行语法解析,再之后由C++编写后端引擎将UI转换为渲染指令交给渲染引擎绘制到屏幕ArkUI语法初见ArkTS对TypeScript语言进行扩展,提供值类型结构...,子视图上报给父视图自身大小值是指 组件内容区大小ArkUI中常用布局容器如何选择使用哪种布局线性布局(Row/Column)线性布局子元素在线性方向上(水平方向和垂直方向)依次排列线性布局容器包括...:子元素在水平方向左对齐HorizontalAlign.Center:子元素在水平方向居中对齐HorizontalAlign.End:子元素在水平方向右对齐。...(List)列表容器是为了高效处理长列表容器,能支持横向、竖向滚动,数据分组,分组头悬浮等功能列表容器内所有子元素必须是 ListItemGroup 或ListItem,我们实际内容是在这俩容器内部创建列表子元素一般使用

    21510

    开始使用-编写你第一个Flutter应用程序 顶

    如何实现有状态小部件。 如何创建一个无限,延迟加载列表。 如何创建并导航到第二个屏幕。 如何使用主题更改应用程序外观。...你应该看到下面的屏幕。 ? 意见 本示例创建一个Material应用程序。 Material是一种视觉设计语言,在移动设备和网络是标准Flutter提供了一套丰富Material小部件。...当用户滚动时,ListView小部件中显示列表将无限增长。 ListViewbuilder工厂构造函数允许您根据需要懒惰地构建列表视图。...lib/main.dart 第6步:导航到新屏幕 在这一步中,您将添加一个显示收藏夹屏幕(在Flutter中称为路由)。 您将学习如何在主路由和新路由之间导航。...1.向RandomWordsState构建方法中AppBar添加列表图标。 当用户点击列表图标时,包含收藏夹项目的新路线被推送到导航器,显示该图标。

    9.5K20

    Flutter布局基础——Row水平布局

    Flutter布局基础——Row水平布局 Flutter水平布局使用Row,可设置元素水平方向排列,如果想要子元素充满,可把子元素使用Expanded包括起来。 <!...: 子视图在父视图布局方式 MainAxisAlignment.spaceAround: 子视图之间和子视图距离父视图都留有间距 MainAxisAlignment.center: 所有子试图居中...如果想要上面的first、second、third充满屏幕宽度,要怎么设置呢?很简单,直接使用Expanded包括起来即可。...,会发现不同显示效果,对比后能发现,同时使用Expanded包括起来后,相当于三个子元素均分了屏幕宽度。...还记得最开始说的当子元素宽度超出时,Flutter会显示提示,图片中最右侧红框标出来部分,就是Flutter提示。

    3.6K10
    领券