Flutter流式组件Wrap

这篇具有很好参考价值的文章主要介绍了Flutter流式组件Wrap。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Wrap组件类似Row组件都是横向依次排列,唯一的区别就是Wrap能自动换行。

Flutter流式组件Wrap,Flutter,flutter

主要代码:

Wrap(
  spacing: 10, //左右间距
  runSpacing: 10, //上下间距
  // direction: Axis.vertical,//主轴的方向,默认横向
  // alignment: WrapAlignment.spaceBetween, //主轴对齐方式
  children: [
    Button("女装", onPressed: () {}),
    Button("笔记本", onPressed: () {}),
    Button("玩具", onPressed: () {}),
    Button("时尚", onPressed: () {}),
    Button("男装", onPressed: () {}),
    Button("连衣裙", onPressed: () {}),
    Button("穿搭", onPressed: () {}),
  ],
),

Wrap中spacing属性调整组件间的左右间距;

runSpacing属性调整每行之间的上下间距;

direction属性为控件排列方向,默认横向排列,设置为Axis.vertical时,组件依次纵向排列,当容器内第一列排列满时自动换行排第二列,依次向下一列排列;

alignment属性为控件之间的对齐方式。

自定义按钮:

//自定义按钮组件
class Button extends StatelessWidget {
  final String text;
  final void Function()? onPressed;

  const Button(this.text, {super.key, required this.onPressed});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      style: ButtonStyle(
        shape: MaterialStateProperty.all(
          RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(20),
          ),
        ),
        backgroundColor: MaterialStateProperty.all(CupertinoColors.systemGrey5),
        foregroundColor: MaterialStateProperty.all(Colors.black),
      ),
      onPressed: onPressed,
      child: Text(text),
    );
  }
}

 完整代码:文章来源地址https://www.toymoban.com/news/detail-528078.html

import 'package:flutter/cupertino.dart';
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(
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Flutter"),
        ),
        body: const MyHomePage(),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const LayoutDemo();
  }
}

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

  @override
  Widget build(BuildContext context) {
    return ListView(
      padding: const EdgeInsets.all(10),
      children: [
        Row(
          children: [
            Text(
              "热搜",
              style: Theme.of(context).textTheme.titleLarge,
            ),
          ],
        ),
        const Divider(),
        Wrap(
          spacing: 10, //左右间距
          runSpacing: 10, //上下间距
          // direction: Axis.vertical,//主轴的方向,默认横向
          // alignment: WrapAlignment.spaceBetween, //主轴对齐方式
          children: [
            Button("女装", onPressed: () {}),
            Button("笔记本", onPressed: () {}),
            Button("玩具", onPressed: () {}),
            Button("时尚", onPressed: () {}),
            Button("男装", onPressed: () {}),
            Button("连衣裙", onPressed: () {}),
            Button("穿搭", onPressed: () {}),
          ],
        ),
        const SizedBox(height: 10),
        Row(
          children: [
            Text(
              "历史记录",
              style: Theme.of(context).textTheme.titleLarge,
            ),
          ],
        ),
        const Divider(),
        const Column(
          children: [
            ListTile(title: Text("女装")),
            Divider(),
            ListTile(title: Text("手机")),
            Divider(),
            ListTile(title: Text("电脑")),
            Divider(),
          ],
        ),
        const SizedBox(height: 40),
        Padding(
          padding: const EdgeInsets.all(40),
          child: OutlinedButton.icon(
            onPressed: () {},
            icon: const Icon(
              Icons.delete,
              color: Colors.grey,
            ),
            label: const Text(
              "清空历史",
              style: TextStyle(color: Colors.grey),
            ),
          ),
        ),
      ],
    );
  }
}

//自定义按钮组件
class Button extends StatelessWidget {
  final String text;
  final void Function()? onPressed;

  const Button(this.text, {super.key, required this.onPressed});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      style: ButtonStyle(
        shape: MaterialStateProperty.all(
          RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(20),
          ),
        ),
        backgroundColor: MaterialStateProperty.all(CupertinoColors.systemGrey5),
        foregroundColor: MaterialStateProperty.all(Colors.black),
      ),
      onPressed: onPressed,
      child: Text(text),
    );
  }
}

到了这里,关于Flutter流式组件Wrap的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter(九)Flutter动画和自定义组件

    Animation、Curve、Controller、Tween这四个角色,它们一起配合来完成一个完整动画 Animation Animation是抽象类,和UI渲染没有关系,功能是保存动画的插值和状态;比较常用的是Animation addListener:帧监听器中最常见的行为是改变状态后调用setState()来触发UI重建 addStatusListener:动画开始

    2024年02月10日
    浏览(39)
  • 【第五章 flutter学习之flutter进阶组件-上篇】

    children可以复制多个组成列表 设置纵向列表方向 Flutter动态列表可以通过ListView.builder或ListView.separated来实现。 如下例 Filutter 是一个开源的 JavaScript 库,用于创建和管理可过滤和可排序的数据表。FridView 是 Filutter 库中的一个组件,用于在数据表中显示数据行。FridView 组件具有

    2024年02月14日
    浏览(25)
  • 【第五章 flutter学习之flutter进阶组件-下篇】

    Flutter Scaffold 是一个用于构建基本用户界面的布局组件。它提供了许多属性,使得开发者能够轻松地创建一个完整的屏幕布局。以下是 Flutter Scaffold 的一些主要属性: appBar:定义应用的顶部导航栏。通常,它包含标题、返回按钮和其他导航控件。 body:应用程序的主要内容区

    2024年02月14日
    浏览(33)
  • Flutter 组件(三)按钮类组件

    Flutter开发笔记 Flutter 组件(三)按钮类组件 - 文章信息 - Author: Jack Lee (jcLee95) Visit me at: https://jclee95.blog.csdn.net Email: 291148484@163.com. Shenzhen Chine Address of this article: https://blog.csdn.net/qq_28550263/article/details/131387856 【介绍】:本文介绍 Flutter 按钮类组件。 上一节:《 Flutter 组件(二

    2024年02月11日
    浏览(24)
  • Flutter组件--按钮(Button)组件

      属性  说明 onPressed 必填参数,按下按钮时触发的回调,接收一个方法,传null表示按钮禁用,会显示禁用相关样式 child 子组件 style 通过ButtonStyle装饰 ButtonStylee里面的常用的参数 属性名称 值类型  属性值 foregroundColor Color 文本颜色 backgroundColor Color 按钮的颜色 shadowColor Col

    2024年02月14日
    浏览(27)
  • Flutter(六)可滚动组件

    Flutter 中的可滚动主要由三个角色组成:Scrollable、Viewport 和 Sliver: Scrollable :用于处理滑动手势,根据滑动偏移构建 Viewport 。 Viewport:显示的视窗,即列表的可视区域; Sliver:视窗里显示的元素。 具体布局过程: Scrollable 监听到滑动后,根据滑动偏移构建 Viewport ,Viewpor

    2024年02月07日
    浏览(26)
  • flutter 手写日历组件

    先看效果  直接上代码 calendar_popup_view.dart custom_calendar.dart hotel_app_theme.dart RangePicker.dart  这个文件是使用的地方 这里还使用到了  getx 的组件 从底部弹出

    2024年02月13日
    浏览(26)
  • flutter组件_AbsorbPointer

    官方说明:A widget that absorbs pointers during hit testing. 翻译:一个在命中测试期间吸收指针的Widget。 作者释义:阻止子元素的点击事件 。 AbsorbPointer 的定义 属性: 属性名 属性值 absorbing 是否阻止子Widget的点击事件,默认为true(阻止) ignoringSemantics 是否保持子Widget的语义信息,

    2024年04月10日
    浏览(27)
  • flutter-第三方组件

    卡片折叠 stacked_card_carousel  扫一扫组件 qr_code_scanner  权限处理组件 permission_handler 生成二维码组件 pretty_qr_code  角标组件 badges 动画组件 animations app更新  app_installer 带缓存的图片组件 cached_network_image 密码输入框 collection 图片保存 image_gallery_saver 自定义滑块 image_gal

    2024年02月13日
    浏览(34)
  • Flutter中的基本组件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Text组件(简单样式文本框组件)用于显示简单的样式文本,它的常用属性如下表所示。 TextStyle的常用属性如下表所示。 RichText组件(丰富文本组件)是Flutter提供的一个可以展示多种样式的Widget,经常应用

    2024年02月04日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包