Flutter流式组件Wrap

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

主要代码:

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});@overrideWidget 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),);}
}

 完整代码:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget 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);@overrideWidget build(BuildContext context) {return const LayoutDemo();}
}class LayoutDemo extends StatelessWidget {const LayoutDemo({super.key});@overrideWidget 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});@overrideWidget 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),);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13219.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React hooks之useCallback的使用与性能分析

使用useCallback优化代码 useCallback是对传过来的回调函数优化,返回的是一个函数;useMemo返回值可以是任何,函数,对象等都可以。 简单来说就是返回一个函数,只有在依赖项发生变化的时候才会更新(返回一个…

《项目实战》构建SpringCloud alibaba项目(二、构建微服务鉴权子工程store-authority-service)

系列文章目录 构建SpringCloud alibaba项目(一、构建父工程、公共库、网关) 构建SpringCloud alibaba项目(二、构建微服务鉴权子工程store-authority-service) 文章目录 系列文章目录前言1、在公共库增加 UserInfo类2、微服务鉴权…

电脑文件怎么加密?哪个文件加密软件好用?

不少人的电脑中都存放着一些重要文件,这些文件需要使用专业的方式进行加密保护。那么电脑文件该怎么加密呢?下面我们就通过本文来一起了解一下吧。 超级加密3000 作为一款备受好评的文件加密软件,超级加密3000在安全性、便捷性、全面性等方面…

记录征战Mini开发板从无到有

前言 我们店铺的开发板目前主要有Altera,Xilinx以及国产安路,高云。Xilinx只有Spartan6系列,这个系列的芯片只支持ISE软件,但是很多客户用的是VIVADO软件,所以导致我们无法满足客户的需求。基于此原因,我们经过几个月…

AST-抽象语法树

js加密解混淆首先想到的是AST语法树,那么什么是AST呢,学习AST过程的一些笔记 1.AST是JS执行的第一步是读取 js 文件中的字符流,然后通过词法分析生成令牌流Tokens,之后再通过语法分析生成 AST(Abstract Syntax Tree&a…

读取摄像机的内参和畸变系数并对畸变图像进行去畸变

这个程序的目标是读取摄像机的参数(内参和畸变系数),并对畸变图像进行去畸变操作,然后进行一些特征点和矩形框的绘制。 #include 语句引入所需的库。using namespace std; 和 using namespace cv; 语句是在代码中使用std和opencv命名空间,这样就不用在每次使用这些库的函数…

ChatGPT 有什么新奇的使用方式?

先来看看ChatGPT对此问题如何作答 ChatGPT对此问题如何作答 ChatGPT是什么 ChatGPT是一种基于自然语言处理的语言模型,由OpenAI开发。它是建立在GPT(Generative Pre-trained Transformer)架构的基础上的,采用了深度学习技术。GP…

Todo-List案例版本一

初级使用e.target.value 记得安装npm i nanoid与UUID类似 快捷键ctrlH替换内容 src/components/MyHeader.vue <template><div class"todo-header"><input type"text" placeholder"请输入你的任务名称&#xff0c;按回车键确认&quo…

浅谈RPC协议

RPC协议 RPC简介为啥需要RPCRPC的调用过程gRPCProtoBuffergRPC实战 RPC简介 RPC&#xff08;Remote Procedure Call Protocol&#xff09;远程过程调用协议&#xff0c;目标就是让远程服务调用更加简单、透明。RPC 框架负责屏蔽底层的传输方式&#xff08;TCP 或者 UDP&#x…

《动手学深度学习》——线性神经网络

参考资料&#xff1a; 《动手学深度学习》 3.1 线性回归 3.1.1 线性回归的基本元素 样本&#xff1a; n n n 表示样本数&#xff0c; x ( i ) [ x 1 ( i ) , x 2 ( i ) , ⋯ , x d ( i ) ] x^{(i)}[x^{(i)}_1,x^{(i)}_2,\cdots,x^{(i)}_d] x(i)[x1(i)​,x2(i)​,⋯,xd(i)​…

特征选择算法 | Matlab实现基于ReliefF特征选择算法的分类数据特征选择 ReliefF

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 特征选择算法 | Matlab实现基于ReliefF特征选择算法的分类数据特征选择 ReliefF 部分源码 %--------------------

写一个starter(spring boot)

前置知识 自动装配 自动装配的一个重要注解就是SpringBootApplication。它是一个复合注解&#xff0c;由四个元注解和另外三个注解组成。这三个注解是&#xff1a; ConfigurationEnableAutoConfigurationComponentScan Configuration Configuration 是 JavaConfig 形式的…