flutter笔记-主要控件及布局

文章目录

  • 1. 富文本实例
  • 2. Image
    • 2.1 本地图片
    • 2.2 网络图片
  • 笔记
  • 3. 布局
  • 4. 滑动相关view
    • 4.1 GridView类似九宫格view
    • 4.2 ListView

关于widget的生命周期的相关知识这里就不做介绍,和很多语言类似;

1. 富文本实例

Dart中使用richtext,示例如下:

const Text.rich(
    textAlign:TextAlign.center,
    TextSpan(
      text: '生于忧患,死于安乐\n',
      style: TextStyle(color: Colors.red, fontSize: 18),
      children: [
        TextSpan(
          text: '孟子及其弟子〔先秦〕',
          style: TextStyle(color: Colors.blueGrey,fontSize: 10),
        ),
        WidgetSpan(child:Icon(Icons.face,color: Colors.red)),
        TextSpan(
            text: """
            \n    舜发于畎亩之中,傅说举于版筑之间,胶鬲举于鱼盐之中,管夷吾举于士,孙叔敖举于海,百里奚举于市。故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。\n(是人 一作:斯人)
            \n    人恒过,然后能改;困于心,衡于虑,而后作;征于色,发于声,而后喻。入则无法家拂士,出则无敌国外患者,国恒亡。然后知生于忧患而死于安乐也。
            """,
          style: TextStyle(color: Colors.black,fontSize: 13)
        )
      ],
    ),
  )

效果如下:
在这里插入图片描述

2. Image

图片类主要用的有两种一种是加载本地的图片,一种是网络的。其他的图片类如下:
在这里插入图片描述
上图是在类中点击后:command + B或option + command + B,就会出现所有的子类实现;

2.1 本地图片

本地的图片加载比较复杂:

  • 需要新建文件夹assets/images目录,
  • 然后修改pubspec.yaml文件:找到flutter:配置项目新增:
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true
  assets:
    - assets/images/*
  • 最后执行flutter pub get
  • 图片加载如下:
  const Image(
          image: AssetImage("assets/images/desktop.jpg"),
        width: 200,
        fit: BoxFit.cover,
      )

2.2 网络图片

网络图片的使用比较简单:Image(image: NetworkImage("https://uri"));

笔记

记录一个快捷键,比如下面的代码:

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text("计数器"),
      ),
      body: _MyHomeContent(),
    );
  }
}

我们想在AppBar外面加一个Center的wedge;mac上选中AppBar后按option(alt)+enter就会出现如下图的选项:
在这里插入图片描述
选中任意一个就会自动添加;

3. 布局

Dart中使用最多就是Container,Align,edge设置内边距;

  1. container使用如下:
class _MyHomeContentState extends State<_MyHomeContent> {
  int _counter = 0;

  
  Widget build(BuildContext context) {
    return  Container(
      width: 200,
      height: 200,
      alignment: Alignment(0.5,0.5),
      padding: EdgeInsets.all(50),
      margin: EdgeInsets.all(10),
      decoration: BoxDecoration(
        color: Colors.blue,
        borderRadius: BorderRadius.circular(10),
      ),
      child: const Column(
        children: [
          Icon(
            Icons.people,
            color: Colors.orange,
          ),
        ],
      ),
    );
  }
}
  1. align如下:
class _MyHomeContentState extends State<_MyHomeContent> {
 int _counter = 0;

 
 Widget build(BuildContext context) {
   return const Align(
   alignment: Alignment(0.5, 0.5),
  child: Icon(
  Icons.people,
    color: Colors.orange,
    ),
   );
 }
}

Row 和 Column 布局这里不做分析;
补充Positioned和Stack使用:示例如下:

 class _MyHomeContentState extends State<_MyHomeContent> {
  int _counter = 0;

  
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        Image.asset("assets/images/desktop.jpg", width: 300),
        Positioned(
            left: 0,
            right: 0,
            bottom: 0,
            child: Container(
              padding: const EdgeInsets.all(10),
              color: const Color.fromARGB(160, 0, 0, 0),
              child: Row(
                // 控件平分剩余空间
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  const Text(
                    "这个图片很合适",
                    style: TextStyle(fontSize: 20, color: Colors.white),
                  ),
                  IconButton(
                      onPressed: () {
                        print("俺就点击了。。。。。。");
                      },
                      icon: const Icon(
                        Icons.favorite_border,
                        color: Colors.white,
                      ))
                ],
              ),
            ))
      ],
    );
  }
}

效果如下图:

在这里插入图片描述

4. 滑动相关view

4.1 GridView类似九宫格view

使用如下:

class _MyHomeContentState extends State<_MyHomeContent> {
  bool _isFavorite = false;
  
  Widget build(BuildContext context) {
    return GridView(
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 3,
          crossAxisSpacing: 10,
          mainAxisSpacing: 10,
        ),
        children:List.generate(9, (index) {
          return Container(
            width: 40,
            height: 40,
            child: Image.asset(index%2==0?"assets/images/img1.png":"assets/images/img2.png"),

          );
        }
    )
          );

  }
}

效果:
在这里插入图片描述

4.2 ListView

这里主要介绍有分隔线的使用:

class _MyHomeContentState_list2 extends State<_MyHomeContent> {
  bool _isFavorite = false;
  
  Widget build(BuildContext context) {
    return ListView.separated(
        itemCount: 100,
        itemBuilder: (context, index) {
          return ListTile(
            leading: Container(
              width: 50,
              height: 50,
              // decoration: BoxDecoration(
              //   shape: BoxShape.circle,
              //   color: Colors.blue,
              // ),
              child: Image.asset(index%2==0?"assets/images/img1.png":"assets/images/img2.png"),
            ),
            title: Text("姓名${index}"),
            subtitle: Text("生日"),
            trailing: Icon(Icons.favorite),
            onTap: (){
              setState(() {
                _isFavorite = !_isFavorite;
              });
            },
          );
        },
        separatorBuilder: (context, index) {
          return const Divider(
            thickness:0.5,
            indent:10,
            endIndent: 10,
            height: 1,
            color: Colors.grey,
          );
        }
    );
  }
}

效果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么通过PHP语言实现远程控制棋牌室

怎么通过PHP语言实现远程控制棋牌室呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制棋牌室&#xff0c;通过专用的包间控制器&#xff0c;来实现包间内所有电器以及门锁的独立控制。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规…

deepin-IDE, 体验AI编程,拿精美定制礼品!

内容来源&#xff1a;deepin&#xff08;深度&#xff09;社区 UOS AI 已经上线半年了&#xff0c;想必很多小伙伴在这半年里都体会到了人工智能的魅力。 那你们知道&#xff0c;在 deepin-IDE 中&#xff0c;可以用 AI 写代码吗&#xff1f;deepin-IDE 结合强大的 AI 编辑代码…

合合信息Embedding模型获得MTEB中文榜单第一

前言 最近几年&#xff0c;可以说大语言模型汇聚了所有的光彩&#xff0c;大语言模型的飞速发展更是吸引着社会各界的目光&#xff0c;这些模型的强大能力源自于Embedding技术的支撑&#xff0c;这种技术将语言转化为机器可理解的数值向量。随着大型语言模型的不断突破&#x…

ssh 文件传输:你应该掌握的几种命令行工具

这篇文章主要分享一下我使用过的 ssh 传输文件的进阶路程&#xff0c;从 scp -> lrzsz -> trzsz&#xff0c;希望能给你带来一些帮助&#xff5e; scp scp 命令可以用于在 linux 系统之间复制文件&#xff0c;具体的语法可以参考下图 其实使用起来也还比较方便&#x…

java-注解

简介 自定义注解 定义 // 自定义注解 public interface MyAnnotation {// 注解的属性// value是注解的一个属性&#xff0c;如果只有一个属性&#xff0c;建议使用valueString value() default "";boolean enabled() default true;String[] exclude() default {}; }使…

适用于Windows和Mac的十大误删除数据恢复软件

数据恢复是从辅助存储或可移动文件中找回丢失、删除或损坏的数据的过程。数据丢失的原因有很多。因此&#xff0c;有必要恢复已删除的数据。有各种可用的软件工具&#xff0c;使用户能够恢复任何类型的已删除数据。但是&#xff0c;任何数据恢复都有四个主要阶段。他们正在修复…

数据库变更时,OceanBase如何自动生成回滚 SQL

背景 在开发中&#xff0c;数据的变更与维护工作一般较频繁。当我们执行数据库的DML操作时&#xff0c;必须谨慎考虑变更对数据可能产生的后果&#xff0c;以及变更是否能够顺利执行。若出现意外数据丢失、操作失误或语法错误等情况&#xff0c;我们必须迅速将数据库恢复到变更…

Altera FPGA 配置flash读写

目录 一、读写控制器的配置 二、生成flash的配置文件 三、关于三种配置文件的大小 四、其他 一、读写控制器的配置 Altera ASMI Parallel&#xff08;下文简称ASMI)这个IP就仅仅是个Flash读写控制器&#xff0c;可以自由的设计数据来源。 关于这个IP的使用&#xff0c;可以…

BootStrap详解

Bootstrap简介 什么是BootStrap&#xff1f; BootStrap来自Twitter&#xff0c;是目前最受欢迎的响应式前端框Bootstrap是基于HTML、CSS、JavaScript的&#xff0c;它简洁灵活&#xff0c;使得Web开发更加快捷 为什么使用Bootstrap&#xff1f; 移动设备优先&#xff1a;自…

python学习笔记----判断语句(三)

一、布尔类型和比较运算符 1.1 布尔类型的字面量&#xff1a; True 表示真False 表示假 定义变量存储布尔类型数据&#xff1a; 变量名 布尔类型字面量 bool_1 True bool_2 False1.2 比较运算符 二、 if语句的基本格式 if 要判断的条件:条件成立时&#xff0c;要做的事…

【3GPP IAB】 3GPP支持IAB架构概述

1 概述 IAB用于回传链路的无线传输&#xff0c;对于NR高频尤其重要&#xff0c;3GPP协议讨论了IAB的可能架构和部署方式&#xff0c;一起来看看吧。 2 IAB 功能和接口 IAB尽量重用为接入定义的现有功能和接口。特别是&#xff0c;移动终端(MT)、gNB- DU、gNB- CU、UPF、AMF和S…

DFR初识

【0】前言 【1】什么Web的开发模式 web开发模式 目前主流的web开发模式有两种&#xff1a; 基于服务端渲染的传统web开发模式 - -前后端混合&#xff1a;BBS项目&#xff0c;图书管理系统-模板语言&#xff1a;dtl-flask&#xff0c;fastapi-go gin-vue&#xff0c;react-微信…

Stylus 精讲:掌握这款 CSS 预处理器,让你的样式编写提升到新境界!

Stylus 是一种先进的 CSS 预处理器&#xff0c;它允许你使用更加强大和优雅的方式来编写 CSS。Stylus 拥有很多现代语言所具有的特性&#xff0c;如混合&#xff08;Mixins&#xff09;、函数、条件语句等&#xff0c;这些特性使得 CSS 的编写变得更加灵活和高效。Stylus 还支持…

如何用OceanBase的 Load Data 导入CSV文件

0 前言 CSV文件&#xff08;Comma-Separated Values&#xff0c;字符分隔值&#xff09;是一种普遍采用的数据存储格式&#xff0c;有不少企业和机构都用它来进行数据的管理和存储。身为开发者&#xff0c;您可能经常遇到这样的需求&#xff1a;需要将CSV的数据导入OceanBase数…

信创需求激增,国产服务器操作系统赋能数字化转型

信创&#xff0c;即信息技术应用创新&#xff0c;是指在关键领域和环节推进信息技术的自主创新&#xff0c;构建安全可控的信息技术体系。随着数字化转型的加速&#xff0c;信创需求激增&#xff0c;国产服务器操作系统在其中扮演着至关重要的角色。国产服务器操作系统如何赋能…

使用Pandas从Excel文件中提取满足条件的数据并生成新的文件

目录 一、引言 二、环境准备 三、读取Excel文件 四、数据筛选 五、保存为新的Excel文件 六、案例与代码总结 七、进阶用法与注意事项 八、结语 在数据处理的日常工作中&#xff0c;我们经常需要从大量数据中筛选出满足特定条件的数据集。Pandas是一个强大的Python数据分…

LeetCode题练习与总结:单词搜索--79

一、题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水…

Airmail 5 for Mac:高效电子邮件管理软件

Airmail 5 for Mac作为一款功能强大的电子邮件客户端软件&#xff0c;为Mac用户带来了全新的邮件管理体验。其高效、直观的操作界面&#xff0c;使得用户可以轻松管理各类邮件&#xff0c;提升工作效率。 Airmail 5 for Mac v5.7.4中文激活版 首先&#xff0c;Airmail 5支持多个…

二叉搜索树(Binary_Search_Tree)

文章目录 二叉搜索树概念二叉搜索树的操作查找插入删除 二叉搜索树的应用二叉搜索树的实现K模型KV模型 二叉搜索树的性能分析 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&a…

计算机网络面试高频:输入域名会发生那些操作,开放性回答

更多大厂面试内容可见 -> http://11come.cn 计算机网络面试高频&#xff1a;输入域名会发生那些操作&#xff0c;开放性回答 输入域名之后&#xff0c;会发生哪些操作&#xff1f; 当在浏览器中输入www.baidu.com并按下回车键时&#xff0c;会触发一系列复杂的网络过程&am…