You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发需求:创建包含3个纵向元素的横向滚动组件

Flutter 横向滚动纵向元素组件实现

要实现包含3个纵向元素的横向滚动组件,用SingleChildScrollView搭配Row就能快速搞定,每个纵向元素用Column承载内容即可。下面是完整实现代码:

import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('横向滚动纵向元素')),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: SingleChildScrollView(
            // 开启横向滚动
            scrollDirection: Axis.horizontal,
            child: Row(
              children: const [
                // 第一个纵向元素
                VerticalItem(
                  icon: Icons.home,
                  title: '首页',
                  subtitle: '欢迎回来',
                ),
                SizedBox(width: 20),
                // 第二个纵向元素
                VerticalItem(
                  icon: Icons.shopping_cart,
                  title: '购物车',
                  subtitle: '有3件商品',
                ),
                SizedBox(width: 20),
                // 第三个纵向元素
                VerticalItem(
                  icon: Icons.person,
                  title: '我的',
                  subtitle: '个人中心',
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

// 封装纵向元素组件
class VerticalItem extends StatelessWidget {
  final IconData icon;
  final String title;
  final String subtitle;

  const VerticalItem({
    super.key,
    required this.icon,
    required this.title,
    required this.subtitle,
  });

  @override
  Widget build(BuildContext context) {
    return SizedBox(
      // 固定每个纵向元素的宽度
      width: 120,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Icon(icon, size: 48, color: Colors.blue),
          const SizedBox(height: 12),
          Text(
            title,
            style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
          ),
          const SizedBox(height: 6),
          Text(
            subtitle,
            style: const TextStyle(fontSize: 14, color: Colors.grey),
          ),
        ],
      ),
    );
  }
}

关键说明

  • SingleChildScrollView通过scrollDirection: Axis.horizontal开启横向滚动,超出屏幕宽度的内容会自动支持滑动。
  • 每个纵向元素用Column组织图标、标题、副标题,通过SizedBox固定宽度避免内容互相挤压。
  • 可以根据需求修改VerticalItem的样式,比如调整颜色、间距、尺寸,或者添加点击事件。

内容的提问来源于stack exchange,提问作者Nahom Ersom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:45:40