Flutter教程 - 基础组件(上)

简介: Flutter的几个基础组件解析(上)

前言

**为了能更快的创建一个好看的应用,Flutter提供了一系列的组件。有基础组件(Basics Widgets),质感组件(Material Components)等,本篇将介绍常v用的基
础组件。分为上下两篇** 在这里插入图片描述
基础组件(下)在这里哦(综合实例!!!)

结构图:

在这里插入图片描述

本小结内容:

1.Text(文本组件)

2.Image和Icon

3.Container(容器组件)

4.Row(横向)和Column(纵向)

— 咱们从子组件一步步往上学习

1.Text(文本组件)

Text用于显示简单样式文本,它包含一些控制文本显示样式的一些属性。类似于Android上的TextView~

先来看看效果图:在这里插入图片描述
再来看看它的源码:

Text(this.data, // 内容
{
  Key key,
  this.style, // 样式
  this.strutStyle, // 使用的支柱风格
  this.textAlign, // 对齐方式
  this.textDirection, // 文本方向
  this.locale, //
  this.softWrap, // 是否允许换行显示
  this.overflow, // 超出屏幕显示方式
  this.textScaleFactor, // 每个逻辑像素的字体像素数,
  this.maxLines, // 最大行数
  this.semanticsLabel, // 文本的另一个语义标签
})

现在让我们来实现一下效果:

Text(
  "color/fontSize:设置字体颜色和字号",
  style: TextStyle(
    fontSize: 20.0,
    color: Colors.red,
  ),
),
Text(
  "inherit: 为 false 的时候不显示",
  style: TextStyle(inherit: true),
),
Text(
  "fontWeight: 字体加粗",
  style: TextStyle(
    fontWeight: FontWeight.w600,
  ),
),
Text(
  'fontStyle: FontStyle.italic 斜体',
  style: new TextStyle(
    fontStyle: FontStyle.italic,
  ),
),
Text(
  'letterSpacing: 字符间距',
  style: new TextStyle(
    letterSpacing: 10.0,
    // wordSpacing: 15.0
  ),
),
Text(
  'wordSpacing: 字或单词间距',
  style: new TextStyle(
    // letterSpacing: 10.0,
    wordSpacing: 15.0,
  ),
),
Text(
  'textBaseline:TextBaseline.alphabetic',
  style: new TextStyle(
    textBaseline: TextBaseline.alphabetic,
  ),
),
Text(
  'textBaseline:TextBaseline.ideographic',
  style: new TextStyle(
    textBaseline: TextBaseline.ideographic,
  ),
),
Text(
  'height: 会乘以fontSize做为行高',
  style: new TextStyle(
    height: 1.5,
  ),
),
Text(
  'decoration: TextDecoration.overline 上划线',
  style: new TextStyle(
    decoration: TextDecoration.overline, // 上划线
    decorationStyle: TextDecorationStyle.dashed, // 线的样式 默认实线
  ),
),
Text(
  'decoration: TextDecoration.lineThrough 删除线',
  style: new TextStyle(
    decoration: TextDecoration.lineThrough,
    decorationStyle: TextDecorationStyle.dashed,
  ),
),
Text(
  'decoration: TextDecoration.underline 下划线',
  style: new TextStyle(
    decoration: TextDecoration.underline,
    decorationStyle: TextDecorationStyle.dotted,
  ),
)

easy~~

2.Image和Icon(图片和Icon)

方法 释义
Image() ImageProvider中获取图片,从本质上看,下面的几个方法都是他的具体实现。
Image.asset(String name) AssetBundler中获取图片
Image.network(String src) 显示网络图片
Image.file(File file) File中获取图片
Image.memory(Uint8List bytes) Uint8List中显示图片

效果图:
在这里插入图片描述
这里就介绍两种加载图片的方式啦~

第一种:从AssetBundler中获取图片

第一步:在lib同级目录下创建images文件夹,导入自己的图片
在这里插入图片描述
第二步:yaml文件配置路径(记得Pub get一下哦~)
在这里插入图片描述
第三步:在代码中使用

Image.asset("images/T.jpg",width: 500,height: 500)

使用width和height来设置图片的宽高~

第二种:从网络获取图片

代码使用:

Image.network("网络图片 例:https://www.baidu.com",width: 500,height: 500)

介绍完成~

3.Container(容器组件)

一个非常牛的组件!!!
在这里插入图片描述
官方给出的简介,是一个结合了绘制(painting)、定位(positioning)以及尺寸(sizing)的widget

下面跟着小T一起来使用它~

老规矩先上效果图:在这里插入图片描述
那么先介绍一下Container的源码:

Container({
  this.alignment, // 相对于父组件的位置
  this.padding, //容器内补白,属于decoration的装饰范围
  Color color, // 背景色
  Decoration decoration, // 背景装饰
  Decoration foregroundDecoration, //前景装饰
  double width,//容器的宽度
  double height, //容器的高度
  BoxConstraints constraints, //容器大小的限制条件
  this.margin,//容器外补白,不属于decoration的装饰范围
  this.transform, //变换
  this.child, // 添加子组件
})

现在来实现上图的效果

Container(
  margin: EdgeInsets.only(top: 50.0, left: 120.0),
  //容器外填充
  // 等同于width: 200.0 height: 150.0,
  constraints: BoxConstraints.tightFor(width: 200.0, height: 150.0),
  //卡片大小
  decoration: BoxDecoration(
      //背景装饰
      gradient: RadialGradient(
          //背景径向渐变
          colors: [Colors.deepOrange, Colors.amberAccent],
          center: Alignment.topLeft,
          radius: .98),
      boxShadow: [
        //卡片阴影
        BoxShadow(
            color: Colors.black54,
            offset: Offset(2.0, 2.0),
            blurRadius: 4.0)
      ]),
  transform: Matrix4.rotationZ(.2),
  //卡片倾斜变换
  alignment: Alignment.center,
  //卡片内文字居中
  child: Text(
    //卡片文字
    "5.20?", style: TextStyle(color: Colors.white, fontSize: 40.0),
  ),
));

是不是很简单有趣,同学们也可以自己diy一些小样式来练习......

4.Row(横向)和Column(纵向)

Row:

老规矩效果图来一波:在这里插入图片描述
然后让我们来看看它的源码:

Row({
  Key? key,
  MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,//将子Widget放置在什么位置
  MainAxisSize mainAxisSize = MainAxisSize.max,//设置Row在主轴上应该占据多少空间
  CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,//子元素应该如何沿着横轴放置,默认中间对齐
  TextDirection? textDirection,//设置子widget的左右显示方位,只有在crossAxisAlignment为start、end的时候起作用;
  VerticalDirection verticalDirection = VerticalDirection.down,//设置垂直方向上的方向
  TextBaseline? textBaseline, //配合CrossAxisAlignment.baseline一起使用
  List<Widget> children = const <Widget>[],
})

现在让小T带你实现一下:

Row(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  crossAxisAlignment: CrossAxisAlignment.end,
  children: <Widget>[
    Container(
      color: Colors.amberAccent,
      width: 100.0,
      height: 100.0,
      child: Text('data'),
    ),
    Container(
      color: Colors.blue,
      width: 100.0,
      height: 100.0,
      child: Text('data'),
    ),
    Container(
      color: Colors.tealAccent,
      width: 100.0,
      height: 100.0,
      child: Text('data'),
    ),
    Container(
      color: Colors.redAccent,
      width: 100.0,
      height: 100.0,
      child: Text('data'),
    ),
  ],
)

非常简单的小Demo...

Column:

效果:在这里插入图片描述
源码与Row类似:

Column({
  Key? key,
  MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
  MainAxisSize mainAxisSize = MainAxisSize.max,
  CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
  TextDirection? textDirection,
  VerticalDirection verticalDirection = VerticalDirection.down,
  TextBaseline? textBaseline,
  List<Widget> children = const <Widget>[],
})

实现效果的代码也差不多喔~~

欢迎留言纠正 ~

相关文章
|
1天前
Flutter 组件(二)文本 与 输入框组件
Flutter 组件(二)文本 与 输入框组件
86 0
|
1天前
|
容器
Flutter 组件(一)组件概述
Flutter 组件(一)组件概述
62 0
|
1天前
|
前端开发 搜索推荐 UED
【Flutter前端技术开发专栏】Flutter中的高级UI组件应用
【4月更文挑战第30天】探索Flutter的高级UI组件,如`TabBar`、`Drawer`、`BottomSheet`,提升应用体验和美观度。使用高级组件能节省开发时间,提供内置交互逻辑和优秀视觉效果。示例代码展示了如何实现底部导航栏、侧边导航和底部弹出菜单。同时,自定义组件允许个性化设计和功能扩展,但也带来性能优化和维护挑战。参考Flutter官方文档和教程,深入学习并有效利用这些组件。
【Flutter前端技术开发专栏】Flutter中的高级UI组件应用
|
1天前
|
Dart 前端开发 开发者
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
【4月更文挑战第30天】Dart是Google为Flutter框架打造的高效编程语言,具有易学性、接口、混入、抽象类等特性。本文概述了Dart的基础语法,包括静态类型(如int、String)、控制流程(条件、循环)、函数、面向对象(类与对象)和异常处理。此外,还介绍了库导入与模块使用,帮助开发者快速入门Flutter开发。通过学习Dart,开发者能创建高性能的应用。
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
|
1天前
|
Dart
Flutter 中优雅切换应用主题的组件
【Flutter】使用adaptive_theme组件优雅切换应用主题:封装MaterialApp,支持light/dark/system模式,自定义色彩,保存选择,含调试按钮。安装配置、设置主题、监听切换、自定义颜色、读取配置步骤详细。代码示例与学习路径推荐。[查看完整教程](https://flutter.ducafecat.com/blog/flutter-app-theme-switch)
Flutter 中优雅切换应用主题的组件
|
8月前
|
人机交互
Flutter笔记 - ListTile组件及其应用
Flutter笔记 - ListTile组件及其应用
106 0
|
1天前
|
开发者 索引 容器
Flutter开发笔记:Flutter 布局相关组件
Flutter开发笔记:Flutter 布局相关组件
138 0
|
1天前
|
iOS开发
Flutter 组件(三)按钮类组件
Flutter 组件(三)按钮类组件
168 0
|
7月前
|
API 开发者 索引
Flutter笔记:发布一个多功能轮播组件 awesome_carousel
awesome_carousel 模块是一个Flutter轮播图模块。可以实现包括自定义指示器、动画、滚动等等众多功能。能够指定相当多地细节(可以参考 API 部分了解)本文给出 awesome_carousel 模块的两个简单的用法示例。
91 0
|
8月前
|
Dart 前端开发 开发工具
谷歌移动UI框架Flutter教程之Widget
谷歌移动UI框架Flutter教程之Widget

热门文章

最新文章

http://www.vxiaotou.com