Flutter(四)——基础组件

简介: Flutter(四)——基础组件

前言


你如果做过Android开发,那一定熟悉里面各种官方提供的布局,比如LinearLayout,RelativeLayout等,你也一定和博主一样写过很多自定义控件,如果你学过Kotlin,并且用XML的DSL框架Anko声明Android组件,你会发现这与Flutter那种嵌套布局写法极为相似,下面是整个Flutter布局图:

我们将通过几篇博文讲述一些Flutter布局,对齐方式以及使用场景,下面我们开始学习基础组件。


基础组件


基础组件是组件的鼻祖,flutter必须要掌握的知识。在组件的划分上,Container,Row,Column都属于基础组件。但是Container又属于单一子元素组,而Row,Column又属于多子元素组件。


Text

Text组件,相当于Java开发Android时的TextView,基本的使用代码如下:

Text("hello world");

顾名思义,就是专门输出基本文字的控件,不过,这样使用肯定会很单调,毕竟Java开发Android时的文本控件又非常多的玩法,比如跑马灯等等,同样我们Flutter中也可以通过各种样式定义出来更多的Text玩法,博主专门列了一个表格,详细说明它的常用属性。

属性

数值

textAlign

对齐方式

maxLines

最大行数

textScaleFactor

缩放因子,默认值为1.0

overflow

配合maxLines使用,超出最大行数时,可以用省略号或渐变效果隐藏多余行数

style

TextStyle对象,其属性又color,fontFamily,background,fontSize,下划线等
textSpan 配置Text.rich使用,被包装成RichText,可实现类似富文本的效果

其中常用的属性就是style,textAlign以及maxLines和overflow组合使用,比如在一个详情列表里面,内容太长就可以使用后一种组合方式。


常用属性使用

比如这里,我们先使用maxLines和overflow的组合使用,代码如下:

Text(
    'You have pushed the button this many times:You have pushed the button this many times:You have pushed the button this many times:You have pushed the button this many times:',
    maxLines: 1,
    overflow: TextOverflow.ellipsis,
),


这里设置文本最大行数为一行,但其实文字非常长,已经超出了范围,所以,我们设置overflow,让它将多余的内容用省略号显示:

接着,我们在使用样式style,和textAlign,代码如下:

Text(
    'You have',
    maxLines: 1,
    style: TextStyle(
    fontSize: 33,
    fontStyle: FontStyle.italic,
    color: Color.fromARGB(255, 123, 233, 188)),
    textAlign: TextAlign.center,
    overflow: TextOverflow.ellipsis,
),


这里我们设置了文字的各种style,比如设置文字大小33,样式为斜体,颜色随便设置了一个ARGB值,也设置了文字居中显示,效果如下:

其他属性,需要使用时,查询文档就行,不需要死记硬背,对于Text,博主这里就讲到这里,下面我们将介绍另一个基础组件Icon。


Icon

从名字我们就知道,这是一个图标,在Android系统中支持系统自带的图标,mipmap存放的就是Icon类型图片,使用的方式如下:

Icon(Icons.search,color: Colors.red,),

这里设置了图标的样式为搜索框样式,设置搜索框图标的颜色为红色,显示的效果如下:

内置的Icon系统图标其实有很多种类,如下图所示,这里就不多做讲解,后续需要使用,可以对应选择自己需要的图标:

备注:这些系统自带的图标,全部都是矢量图标,不管放大或者缩小,都不会和像素图片一样失真,所以可以放心大胆的随意使用,如果这些图标都不能满足你的需求,可以去阿里妈妈的适量图标字体库选择。


Image

在使用Java开发Android项目的时候,我们经常用到ImageView控件,flutter给我们也提供了类似的组件Image,我们先来看看基本的使用方式:

Image(image: AssetImage("images/timg.gif"),width: 200,),

这里使用起来也是很简单,直接引用你的资源文件图片文件,而且flutter的Image可以直接显示动图,而Java开发的ImageView就不行,这一点来看,flutter真心很强大,显示效果如下:

当然你如果直接把代码复制到你的项目中,直接使用肯定不行,因为flutter需要将引用的图片配置到pubspec.yaml文件中才能使用,代码如下:

flutter:
  assets:
    - images/timg.gif


所有从引用的非系统资源,都需要在这里进行声明。当然我们还可以直接引用网络中的图片直接显示,代码如下:

Image(image: NetworkImage("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1888248698,138867488&fm=26&gp=0.jpg"),width: 200,),


除了上述两种方式之外,图片还支持通过Image.file和Image.memory的方式进行加载。可以看出,图片的加载方式有很多途径,可以是本地,网络,内存,文件等,而每种方式都继承了各自的ImageProvider。


Button

Button就是按钮。Flutter中常用的按钮有以下几种:RaisedButton,FlatButton,IconButton,FloatingActionButton,OutlineButton等。当然,我们也可以根据实际情况进行按钮的自定义,我们先来看看如何使用Button,代码如下:

RaisedButton(
    color: Colors.blue,
    child: Text("波纹效果按钮"),
    textColor: Colors.white,
    onPressed: ()=>{},
),
FlatButton(
    textColor: Colors.blue,
    child: Text("扁平无背景按钮"),
    onPressed: (){
        print("FlatButton");
    },
),
OutlineButton(
    textColor: Colors.blue,
    child: Text("边框背景高亮按钮"),
    onPressed: (){
       print("OutlineButton");
},
),


代码其实很简单,这里不需要多做讲解,至于FloatingActionButton,默认项目又下角一直都有,IconButton就是可以点击的Icon,这里也不多赘述,上述代码实现效果如下图所示:


FlutterLogo

顾名思义,这就是一个Flutter的Logo,基础的使用方式如下:

FlutterLogo(
    size: 100.0,
    colors: Colors.red,
),


显示的效果如下图所示,不过这个控件可能用的很少:

不过这个Logo还是有一个小的用途,那就是拿它做占位图,毕竟开发项目时,更新图片比较费时,拿这个图先用一下,项目测试没问题后,在把这个Logo更换为具体的图片。

相关文章
|
2月前
Flutter 组件(二)文本 与 输入框组件
Flutter 组件(二)文本 与 输入框组件
212 0
|
2月前
|
容器
Flutter 组件(一)组件概述
Flutter 组件(一)组件概述
72 0
|
2天前
|
Dart 开发者 UED
flutter 非常用组件整理 第三篇
本文是非常用组件的第三讲,介绍了一些不为人知但却能大幅提升Flutter应用UI效果和功能的高级组件,包括FadeInImage、GridPaper、Hero等,为开发者带来更丰富的UI设计可能。
flutter 非常用组件整理 第三篇
|
2天前
|
Dart 数据安全/隐私保护 开发者
flutter 非常用组件整理 第二篇
本文是Flutter非常用组件第二篇,从开发者的视角出发,精选并深入剖析了AboutDialog、AnimatedGrid、Badge等鲜为人知却功能强大的隐藏组件,为读者提供了一份全面的Flutter UI组件使用指南。无论您是初学者还是有经验的开发者,相信本文都能为您的Flutter项目注入新的活力,助力打造出色的应用界面。
flutter 非常用组件整理 第二篇
|
23天前
flutter 导航组件 AppBar (含顶部选项卡TabBar,抽屉菜单 drawer ,自定义导航图标)
flutter 导航组件 AppBar (含顶部选项卡TabBar,抽屉菜单 drawer ,自定义导航图标)
18 1
|
2月前
|
设计模式 JavaScript 前端开发
flutter组件封装技巧
工厂函数不会自动调用,需要手动调用
34 3
|
2月前
|
Dart
Flutter 中优雅切换应用主题的组件
【Flutter】使用adaptive_theme组件优雅切换应用主题:封装MaterialApp,支持light/dark/system模式,自定义色彩,保存选择,含调试按钮。安装配置、设置主题、监听切换、自定义颜色、读取配置步骤详细。代码示例与学习路径推荐。[查看完整教程](https://flutter.ducafecat.com/blog/flutter-app-theme-switch)
Flutter 中优雅切换应用主题的组件
|
2月前
|
前端开发 搜索推荐 UED
【Flutter前端技术开发专栏】Flutter中的高级UI组件应用
【4月更文挑战第30天】探索Flutter的高级UI组件,如`TabBar`、`Drawer`、`BottomSheet`,提升应用体验和美观度。使用高级组件能节省开发时间,提供内置交互逻辑和优秀视觉效果。示例代码展示了如何实现底部导航栏、侧边导航和底部弹出菜单。同时,自定义组件允许个性化设计和功能扩展,但也带来性能优化和维护挑战。参考Flutter官方文档和教程,深入学习并有效利用这些组件。
【Flutter前端技术开发专栏】Flutter中的高级UI组件应用
|
2月前
|
Dart 前端开发 开发者
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
【4月更文挑战第30天】Dart是Google为Flutter框架打造的高效编程语言,具有易学性、接口、混入、抽象类等特性。本文概述了Dart的基础语法,包括静态类型(如int、String)、控制流程(条件、循环)、函数、面向对象(类与对象)和异常处理。此外,还介绍了库导入与模块使用,帮助开发者快速入门Flutter开发。通过学习Dart,开发者能创建高性能的应用。
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
|
10月前
|
人机交互
Flutter笔记 - ListTile组件及其应用
Flutter笔记 - ListTile组件及其应用
167 0