Widget

Flutter 中的view 就是widget

1 无状态和有状态的Widget

StateslessWidgets 适用于用户界面不依赖于用户的信息的时候
StatesfulWidgets 有状态的,例如HTTP 网络请求或者用户交互之后收到数据动态表更新UI

这就是一个无状态的Widget

Text("we like bom",style: new TextStyle(fontWeight: FontWeight.bold,fontSize: 55)

2 在Flutter 中通过widget 树来声明布局。

一个带有样式的按钮

        body: Center(child: MaterialButton(onPressed: (){print("Btn Click");},child: Text("Click Me"),padding: EdgeInsets.only(left: 25,right: 25),          ),

3 动态添加和删除组件

传入一个函数的表达式,来动态的进行widget 切换

4 如何给widget 来做动画

AnimationController 是一个可以暂停 寻找,停止,反转动画的Anamation 类型。

需要一个Ticker 当vsync 发生是来发送信号,并且在每一帧运行时创建一个 介于0-1之间的线性插值,可以创建一个或者多个Animation 并且附加给controller。

5 如何进行绘图

CustomPaint 和 CustomPainter 实现绘图的效果

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget {// This widget is the root of your application.@overrideWidget build(BuildContext context) {return MaterialApp(title: 'SK DDDSKKS',theme: ThemeData(primarySwatch: Colors.blue,),home: _MyCanvas(),   );}
}// 创建一个类 继承自   CustomPainter
class MyCanvasPainter extends CustomPainter{@overridevoid paint(Canvas cans,Size size){// 1 绘制一个圆形Paint paint = Paint();paint.color = Color.fromARGB(200, 150, 10, 1);cans.drawCircle(Offset(100,200), 50, paint);     // 2 绘制一个方形Paint paint2 = Paint();paint2.color = Color.fromARGB(60, 200, 15, 1);// 第一点位 左上角 第二个点位 右下角Rect rect = Rect.fromPoints(Offset(50,300), Offset(350,500));cans.drawRect(rect, paint2);}bool shouldRepaint(MyCanvasPainter oldDelegate) {return false;}bool shouldRebuildSemantics(MyCanvasPainter oldDelegate) {return false;}}class _MyCanvas extends StatelessWidget{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(body: CustomPaint(painter: MyCanvasPainter(),),);}}

6 构建自定义的widgets

在Flutter 中 遇见组合多个小的widgets 来构建一个新的自定义的widgets

// 创建一个新的按钮class SKButton extends StatelessWidget{final String lable;SKButton(this.lable);@overrideWidget build(BuildContext context) {return new RaisedButton(onPressed: (){print("Click me");},child: new Text(lable),);}}class _MyCanvas extends StatelessWidget{@overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(body: SKButton("这是我的按钮"),);}}

4- flutter - Widget相关推荐

  1. 拆!对比详解 Flutter Widget 和 CSS,你关心的布局原理都在这儿了

    简介: 这篇文章专门对比 Flutter Widget 的布局原理和 CSS 布局原理的差异,分享在对接过程中会遇到的问题和解决方案,帮大家理一理思路,内容可以分为这几部分:1.CSS 和 Widge ...

  2. Flutter Widget嵌套深,修改代码麻烦?

    Flutter Widget嵌套深,修改代码麻烦? 背景 解决方法 代码 修改 pubspec.yaml 以支持 Extension: Widget扩展代码: 实际使用: 背景 许多人初次接触Flut ...

  3. Flutter Widget详解

    Flutter Widget详解 Widget是Flutter应用程序用户界面的基本构建块.每个Widget都是用户界面一部分的不可变声明. 与其他将视图.控制器.布局和其他属性分离的框架不同,Flu ...

  4. Flutter Widget原理(一)

    前言 使用过Flutter的同学,应该都听过一句话"everything is a widget--在Flutter中万物皆是Widget". 这句话虽然不能说,Flutter开发 ...

  5. Flutter Widget

    文章目录 一.Widget分类 二.widget的状态 三.根widget 四.Basics 4.1 模板和主题 4.2 Text文本 4.3 图片 4.4 凸起按钮 4.5 其他widget 4.5 ...

  6. Flutter Widget截图

    Flutter中截图的主要类是RepaintBoundary. 废话不多说,直接上代码: import 'dart:typed_data'; import 'dart:ui' as ui; impor ...

  7. 1、Flutter Widget(IOS Style) - CupertinoApp;

      在Flutter中设计风格主要为Material Design风格,Flutter也支持IOS设置风格Cupertino的一系列Widget,分别对应flutter的包下的material目录下的 ...

  8. Flutter State生命周期 Flutter Widget生命周期 Flutter 应用程序生命周期

    题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼博过,尽力过,一切问心无愧 在 Flutter应用程序中,生命周期涉及两个,一个是 Widget 的生命周期,一个是应用程序的生命周期,本 ...

  9. flutter widget super(key: key)的作用(五)

    在浏览flutter的代码的时候,会发现widget类总是有一个可选的key参数.那么为什么需要有这个参数呢?带着疑惑去研究了下,总算找到了答案. key参数简单的理解,就是widget的id,用来标 ...

  10. 如何使用Flutter Widget构建响应式应用程序评论

    Changes are usual for an app configuration. When the user rotates the phone either vertically or hor ...

最新文章

  1. Django报错:mysql ImproperlyConfigured: mysqlclient 1.3.13 or newer is required, you have 0.9.3的解决办法
  2. [原]关于鼠标滚轮的编程
  3. WebGL Shader 环境搭建
  4. python超市售货统计程序_用Python实现简易超市售货系统
  5. C++ primer 第8章 IO库
  6. android交互xml代码,Unity 与Android的交互(Android studio)
  7. php7isapi,Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程
  8. 技术攻关:从零到精通
  9. Aborted (core dumped)
  10. Java 获取主机ip地址(ipv4)
  11. 科学家正在尝试取用脂肪细胞3D打印人类心脏
  12. 小米MIUI里的便签APP是如何实现插入图片功能的?
  13. 大众点评 与 美团 与饿了么
  14. oj3014文件格式变换
  15. 同步辐射X射线断层扫描成像技术的应用领域和场景
  16. mysql squence分布式,xsequence分布式序列号生成组件1.0版本终于发布了
  17. 【python】关于一些奇奇怪怪的四舍五入问题
  18. mysql数据分析统计表_mysql 数据分析如何实现日报、周报、月报和年报?
  19. 04.南瓜树低代码平台平台 分析后的感想
  20. 仿《文明》游戏制作日志3

热门文章

  1. 基于QProbe创建基本Android图像处理框架
  2. Beta 冲刺 (1/7)
  3. ntpdate[31915]: the NTP socket is in use, exiting
  4. IIS6 MVC3 配置
  5. Android 入门开发
  6. SQL Server 数据库中的 MD5 和 SHA1加密算法
  7. Web service到底是什么?
  8. Intellij IDEA单元测试提示Test events were not received
  9. PHP源代码分析-字符串搜索系列函数实现详解
  10. 【Qt】在ubuntu上打包发布Qt程序,可以不依赖Qt环境