首页 > 其他分享 >Flutter技术基础

Flutter技术基础

时间:2023-12-14 19:32:09浏览次数:32  
标签:异步 name 基础 watch 技术 provider ref Flutter riverpod

技术基础

  1. 语法 主要是用dart,dart就是js和java的组合体,变量的声明,类,继承,构造函数,set get方法,以 _ 开头的变量通常表示为私有变量。这意味着这个变量或者方法只能在当前 Dart 文件中访问,而不能被其他文件访问。一些集合包 如map、list、set等等会用到的数据结构

2.包管理:配置文件pubspec.yaml 对比Java中的maven, Vue中的package.json 。主要作用就是重用代码。

  • dependencies:应用或包依赖的其他包或插件。
  • dev_dependencies:开发环境依赖的工具包(而不是flutter应用本身依赖的包)。
  • flutter:flutter相关的配置选项。

在pub仓库找包,自己开发包,可以直接通过path引入本地包,可以通过git写url依赖包。

  1. 声明式语法

就是层层嵌套,里面有各种属性,传各种值,也可以自定义widget。

  1. future :表示异步操作结果的一种抽象

sync:异步函数的标志

await :等待

async: 声明该函数是一个异步函数,允许在函数体内使用 await 关键字来等待异步操作的完成。

  1. 状态管理:
  • 自己管理自己 StatefulWidget
  • 父管理子 继承StatelessWidget类,因为所有状态都由其父组件处理。当检测到事件时,它会通知父组件
  • 混合管理 现在使用riverpod
  1. riverpod基础:

在Widget树中,获取ref的最常用方法是将StatelessWidget 替换为 ConsumerWidget

ConsumerStatefulWidget + ConsumerState

“ref”有三种主要用法:

  • 获取provider的值并监听更改,这样当该值发生更改时, 将重新构建订阅该值的widget或provider。 这是使用 ref.watch 完成的
  • 在provider上添加监听器,以执行诸如导航到新页面或每当provider更改时显示模态框等操作。 这是使用 ref.listen 完成的。
  • 在忽略更改的情况下获取provider的值。 当我们在诸如“on click”之类的事件中需要provider的值时很有用。 这是使用 ref.read 完成的。

通俗的总结:watch 监听他,变化时重新渲染 listen 也是监听,变化时执行自己自定义的函数

使用read读取值 并改变值

最好的做法

@riverpod
 class Counter extends _$Counter {
   @override
   int build() => 0;
   void increment() => state = state + 1;
 }
 
 Widget build(BuildContext context, WidgetRef ref) {
   Counter counter = ref.watch(counterProvider.notifier);
   return ElevatedButton(
     onPressed: () => counter.increment(),
     child: const Text('button'),
   );
 }

封装一个方法,watch得到这个类,通过这个类调用他的方法

watch 的时候可以使用过滤:

abstract class User {
   String get name;
   int get age;
 }
Widget build(BuildContext context, WidgetRef ref) {
   String name = ref.watch(userProvider.select((user) => user.name));
   return Text(name);
 }

官方参考文档:https://riverpod.dev/zh-Hans/docs/concepts/combining_providers

目前官方支持使用@riverpod注解让他成为一个Provider。需要加一个 riverpod-annotation

  1. 路由管理 :这跟 Web 开发中单页应用的 Route 概念意义是相同的。使用命名路由,首先注册路由表,再通过路由名打开新路由。路由可以传参,通过arguments。
    如何提供权限控制(登录权限):
    提供一个onGenerateRoute回调,然后在该回调中进行统一的权限控制

标签:异步,name,基础,watch,技术,provider,ref,Flutter,riverpod
From: https://blog.51cto.com/u_16392501/8822779

相关文章

  • 【python基础】颜色列表和颜色字典以及python画图
    前言 使用:list_keys=[iforiincnames.keys()]list_values=[iforiincnames.values()] 颜色列表示例:colormap=['#7A57D1','#FF731D','#004d61','#bc8420','#CF0A0A','#83FFE6','#0000A1',&#......
  • dumpbin的使用方法_dumpbin 的基础使用
    要查看exe依赖哪些动态库或某个DLL包含哪些接口函数依赖哪些动态库,可以使用depends工具或者vs自带的dumpbin工具,这里使用vs自带的dumpbin启动dumpbin是使用vs命令行的,有两种方法打开:1、打开vs,工具-命令行-开发者命令提示2、开始菜单-visualstdioxxxx-命令提示符使用使用......
  • 五、Vlan技术
    一、什么是vlan1.传统以太网问题在典型交换网络中,当某台主机发送一个广播帧或未知单播帧时,该数据帧会被泛洪,甚至传递到整个广播域。广播域越大,产生的网络安全问题、垃圾流量问题,就越严重为了解决广播域带来的问题,人们引入了VLAN(VirtualLocalAreaNetwork),即虚拟局域......
  • Bert【1】-基础
    2018年的10月11日,Google发布的论文《Pre-trainingofDeepBidirectionalTransformersforLanguageUnderstanding》,成功在11项NLP任务中取得stateoftheart的结果,赢得自然语言处理学界的一片赞誉之声,BERT就出自该论文,BERT模型的全称是BidirectionalEncoderReprese......
  • 04_ARM硬件基础
    04_ARM硬件基础课程目标:了解我们常用硬件接口,并且编程控制重点难点:对各个接口原理的掌握考核目标:各个接口的作用,实现原理及特性1.硬件基础概述1.1.为什么我们要去研究硬件因为要去使用他,驱动它1.2.我们要研究什么硬件原理及构造地址寄存器协议时长/频率1.3.......
  • 05 基础入门——资产架构&端口&应用&WAF&站库分离&负载均衡
    一、资产架构1、网站配置(1)目录型网站安全bbs.xiaodi8.com  dz论坛      #该域名下有一套网站程序,dz论坛bbs.xiaodi8.com/blog wp程序  #该域名的某个目录下也配置了一套网站程序总结:一个网站,两个程序,其中任何一个程序出现漏洞,都可以进入安全测试(同一服务器......
  • 四、以太网交换基础
    一、以太网交换基础1.以太网协议介绍定义:以太网是当今现有局域网(LocalAreaNetwork,LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。以太网是建立在CSMA/CD(CarrierSenseMultipleAccess/CollisionDetection,载波监听多路访问/冲突......
  • gsap基础-JS动画库
    https://blog.csdn.net/m0_61662775/article/details/131430585https://blog.csdn.net/changbb/article/details/131675810学习文档简介GSAP的全名是GreenSockAnimationPlatform一直发展到今天已经是3.x版本,这是一个适用于现代浏览器的专业Javascript动画库核心语法......
  • Pivotal应用案例之12306.cn的技术革命
     “通过技术改造解决了困扰我们多时的尖峰高流量并发问题,让全国人民不再因为技术原因而抱怨,我们终于舒了一口气。PivotalGemFire分布式集群内存数据技术对整个技术改造发挥了关键的作用。同时,感谢Pivotal公司及其实施方项目团队的努力,在技术开改造过程中确保旧系统顺畅运行、旧......
  • 电路基础笔记1
    电路基础1电流正电荷在电路中的移动方向规定为电流的方向。电流通常用字母“I”表示,单位为安培(简称安),用“A”表示,比安培小的单位有毫安(mA)、微安(μA),它们之间的换算关系为1A=103mA=106μA直流电与交流电直流电是指方向始终固定不变的电压或电流。能产生直流电的电源称为直......