Flutter学习之旅(二)常用的Flutter的基础组件介绍

2023-11-07

前言

为了能更快的创建一个好看的应用,Flutter提供了一系列的组件。有基础组件(Basics Widgets),质感组件(Material Components)等,本篇将介绍常用的基础组件。



目录

这里写图片描述

看到上面的目录,从事Android开发的同学是不是很熟悉,Flutter中组件和Android中非常的类似,毕竟都是出自Google,下面来看个效果图。

这里写图片描述

这里用到了目录中的所有基础组件,下面结合代码简单作简单的介绍。

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      /*脚手架*/
      home: new Scaffold(
        /*容器,对子组件位置大小进行约束*/
        body: new Container(
          /*设置边距*/
            margin: const EdgeInsets.all(40.0),
            /*横向布局*/
            child: new Row(

              children: <Widget>[
                /* 图片组件,此处是从网路加载*/
                new Image.network(
                  "https://img03.sogoucdn.com/app/a/100520024/da58bb2c90efff416f494eecc4a5be17",
                  width: 100.0,
                  height: 200.0,
                ),

                new Container(
                  margin: const EdgeInsets.all(30.0),

                  /* 纵向布局,图片文本垂直排列*/
                  child: new Column(
                    children: <Widget>[
                      new Image.network(
                        "https://img02.sogoucdn.com/app/a/100520024/2b6acc84f93b40d33eba7c6be37efea7",
                        width: 100.0,
                        height: 200.0,

                      ),
                      /*文本*/
                      new Text("I am Flutter Image")
                    ],
                  ),
                )
              ],
            )
        ),

        /*顶部导航栏*/
        appBar: new AppBar(
          title: new Text('Flutter Basic Widgets'),
          backgroundColor: Colors.deepOrange[300],
          actions: <Widget>[
            /*系统提供Icon*/
            new IconButton(icon: new Icon(Icons.search), onPressed: null),

            new IconButton(icon: new Icon(Icons.star), onPressed: null)
          ],
        ),

        /*底部导航栏*/
        bottomNavigationBar: new BottomNavigationBar(

          items: <BottomNavigationBarItem>[
            /*导航栏条目*/
            new BottomNavigationBarItem(
              icon: new Icon(Icons.camera),
              title: new Text("Camera"),
              backgroundColor: Colors.deepOrange[300],
            ),

            new BottomNavigationBarItem(
              icon: new Icon(Icons.access_alarm),
              title: new Text("Alarm"),
              backgroundColor: Colors.deepOrange[300],
            ),
            new BottomNavigationBarItem(
              icon: new Icon(Icons.wifi),
              title: new Text("WIFI"),
              backgroundColor: Colors.deepOrange[300],
            ),

            new BottomNavigationBarItem(
              icon: new Icon(Icons.sms),
              title: new Text("SMS"),
              backgroundColor: Colors.deepOrange[300],
            ),

          ],

          /*选择颜色*/
          fixedColor: Colors.deepPurple[300],
          currentIndex: 0,
          /*固定模式:title和icon都显示*/
          type: BottomNavigationBarType.fixed,

          /*变化模式:title只有在选中时显示*/
          //type: BottomNavigationBarType.shifting,
        ),

        /*浮动页面右下角的按钮*/
        floatingActionButton: new FloatingActionButton(

          backgroundColor: Colors.red,

          onPressed: null,
        ),
      )
      ,
    );
  }
}

1.Text 文本,

显示单一静态(不可编辑)的文本,类似Android中的TextView,IOS中的label。Flutter中Text提供了两个构造函数,首先介绍下上面代码中的new Center

new Center:将子组件放置在自己的中心位置。

Text构造函数:

<!--第一种-->
Text(String data,{ Key key, TextStyle style, TextAlign textAlign, TextDirection textDirection, bool softWrap, TextOverflow overflow, double textScaleFactor, int maxLines })


<!--第二种,通过TextSpan(拓展文本)构造-->

Text.rich(TextSpan textSpan,{ Key key, TextStyle style, TextAlign textAlign, TextDirection textDirection, bool softWrap, TextOverflow overflow, double textScaleFactor, int maxLines })

2.Image和Icon

2-1.图标Icon:

在上面的代码中使用到了很多的系统图标,这些图标的类型都是IconData,通过Icons即可获取。

2-2.图片Image:

Flutter中获取图片的方式提供了以下几种:

<!--从ImageProvider获取图像,后期文章中介绍-->
Image()

<!--本资源文件 -->
Image.asset()

<!--文件形式 -->
Image.file()

<!--内存中 -->
Image.memory()

<!--网络中获取 -->
Image.network()

目前 Flutter的Image支持以下图像格式:JPEG,PNG,GIF,动画GIF,WebP,动画WebP,BMP和WBMP。


3.Row 和 Column

Row:横向布局,Column:纵向布局。这里和Android中的LinearLayout(线性布局)的 horizontal(横向)与 vertical(纵向)是一样的效果。

上图中Image1 和 Image2 + Text 所在的区域就是Row布局,子组件横向排列,区域2 ,Image2 + Text垂直纵向排列。



3.Scaffold(脚手架)

实现基本的Material Design可视化布局结构。Scaffold类提供了很多的Material 组件。

AppBar,通常显示在使用appBar属性的应用顶部。

BottomNavigationBar,通常使用bottomNavigationBar 属性在应用程序底部显示,此功能向图中所示一样,无法做定制,只能以图片和文本形式存在。

BottomAppBar,通常使用bottomNavigationBar属性显示在应用程序的底部,用来构建定制化的底部导航栏或者布局。

FloatingActionButton,圆形按钮,通常使用floatingActionButton属性显示在应用程序的右下角。

SnackBar,通常显示在应用程序底部附近的临时通知。


结尾

上述就是Flutter中基础组件的介绍,用法都是很简单。每个组件都是一个以类的形式存在。使用的时候通过new Text()这种形式来创建组件对象。下篇将介绍Flutter中其他的常用的组件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter学习之旅(二)常用的Flutter的基础组件介绍 的相关文章

随机推荐

  • java设计模式 连续处理_Java 设计模式(12) —— 状态模式

    一 状态模式 能根据内部状态的变化 改变对象的行为 看起来好像修改了类 状态模式 二 示例 智能糖果机 需要设计一款自助购买的糖果机 糖果机的状态有 准备使用 接下来可投入硬币 投入硬币 接下来可摇动把手或者退出硬币 售出糖果 接下来可恢复
  • 每天一个adb命令:screen 命令详解

    screen命令分为截屏screencap命令及录制视频screenrecord命令 screencap命令 sage screencap hp d display id FILENAME h this message p save the
  • 启动node服务请求本地接口

    1 首先就是简单的安装配置node环境这里不做陈述 2 在自己电脑中新建一个文件夹 3 在文件夹里面创建一个app js文件 4 打开命令行输入 npm init 创建package json文件 配上npm init 选项 package
  • haha

    just a test
  • 一个自动生成测试用例的项目(github一个大神,曾经阿里P6的职位都没去的大神)

    https github com TesterlifeRaymond doraemon 这是一个自动生成测试用例的项目 您可以通过如下方式使用他 run in python3 1 在case file 路径下 找到case txt 并按照u
  • 如何解决使用libevent时的共享库加载问题“error while loading shared libraries: libevent-2.1.so.7: cannot open ...“

    在软件开发中 我们经常会使用各种库来加速开发和提高程序的性能 但有时候 在使用这些库的过程中 可能会遇到共享库加载问题 这可能导致程序无法正常运行 问题描述 假设您正在开发一个程序 并在其中使用了libevent库 您编译程序后尝试运行它
  • Java 入门基础篇03-win11手把手教学配置Java环境变量

    一 如何配置Java环境变量 1 本人操作系统win11 找到 此电脑 右键鼠标点击 属性 后 如图1 图1 2 根据提示完成 如图2 图2 3 最后一步 如图3 图3 注意 当以上操作都完成时 需逐个点击确定保存编辑操作 最后进行测试是否
  • 区块链搭建联盟链及控制台安装

    一 联盟链 1 安装依赖 macos 环境安装依赖 brew install openssl curl ubuntu 环境安装依赖 sudo apt install y openssl curl centos 环境安装依赖 sudo yum
  • 【第三周】第 1 节:Python的逻辑控制与异常

    第三周 第一节课 Python的逻辑控制语句 条件判断语句 if elif else a 50 if a gt 100 print a 超过阈值 elif a 50 print a 只有阈值的一半 else print a 小于阈值 循环语
  • DevOps 与 CICD 详解

    DevOps DevOps 是 Development 开发 和 Operations 运维 的组合 是一种方法论 是一组过程 方法与系统的统称 用于促进应用开发 应用运维和质量保障 QA 部门之间的沟通 协作与整合 以期打破传统开发和运营
  • 华为机试OD真题 组成最大数 解题思路详解

    前言 华为机试真题 专栏为华为OD机试真题 源码包含多种语言 如果找不到想要的考题 或者需要最新考题的答案 请进行留言机试题目 注 留言考题请注明机试的时间 java版 javascript版和Python版三种实现方式 题目描述 小组中每
  • CCF-CSP 第一题python实现

    文章目录 201312 1 出现次数最多的数 201403 1 相反数 201409 1 相邻数对 201412 1 门禁系统 201503 1 图像旋转 201509 1 数列分段 201512 1 数位之和 201604 1 折点计数
  • 2022最新整理iOS app上架app详细教程

    2022最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开发者账号 还没有的话申请一个或者借用 申请苹果开发者账号教程 上架App Store之前是先安装到苹果手机测试调试好 app能正常运行再上架 iOS真机调试测
  • flink随笔

    1 map 或者source时继承对应的rich function 在其中的open方法中建立连接 对应的close方法中关闭连接 2 window必须对应keyedstream 也就是说必须在keyby之后 之后在对应相应的增量函数比如R
  • Netty的心跳机制

    文章目录 一 引入 二 工作原理 三 实现 四 源码剖析 五 总结 一 引入 在 TCP 保持长连接的过程中 可能会出现断网等网络异常出现 异常发生的时候 client 与 server 之间如果没有交互的话 它们是无法发现对方已经掉线 二
  • For input string: 1 异常处理

    当使用Integer value 1 的时候却发现抛出了一个NumberFormatException异常 提示信息是For input string 1 百思不得其解 后来打断点调试发现 1 这个字符串中居然有两个char字符 第一个为
  • c语言实现读取csv文件,并对数据进行分析。

    总代码 c在这里插入代码片 include
  • 深度度量学习(DML)中pair-based方法中的loss

    文章目录 前言 一 Constrative loss 1 二 Triplet loss 2 Offline and online triplet mining 参考 三 Lifted Structure Loss 四 N pairs los
  • CUSUM算法学习+小实例

    说明 本文为个人搜集理解 并非全面 CUSUM Cumulative Sum Control Chart 累积和 一种先进的统计方法 她利用当前的和最近的过程数据来检验过程均值中不大的变化或变异性 CUSUM代表偏离目标值得变差的 累积和
  • Flutter学习之旅(二)常用的Flutter的基础组件介绍

    前言 为了能更快的创建一个好看的应用 Flutter提供了一系列的组件 有基础组件 Basics Widgets 质感组件 Material Components 等 本篇将介绍常用的基础组件 目录 看到上面的目录 从事Android开发的