![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
flutter
文章平均质量分 50
yufumatou
这个作者很懒,什么都没留下…
展开
-
共享状态
前言:如页面A和页面B都需要数据Name,如果定义为全局变量,但当在B页面中修改后还需要手动通知A页面进行更新,增加维护成本和出错率。本文介绍通过Provider将数据和Widget进行关联,之后更新数据则相关联的Widget自动刷新。类似Android的DataBinding。正文:1、添加Provider依赖provider: ^3.0.02、定义有状态的数据(只需继承ChangeNotifier,并在set方法中添加notifyListeners()即可)import 'packag原创 2022-04-25 14:54:13 · 1381 阅读 · 0 评论 -
flutter代码提示失效
前言:Android studio打开Android项目编写代码能够正常提示,但在flutter项目中编写且没有代码提示。解决:在Terminal执行"flutter pubget"即可原创 2022-04-24 17:27:55 · 3735 阅读 · 0 评论 -
flutter国际化
flutter国际化原创 2022-04-20 18:54:47 · 1374 阅读 · 0 评论 -
Isolate
前言:Isolate译为隔离,区别于java的线程,由于内存是隔离的,更类似进程。sync和await则是在Isolate中将任务添加到事件队列,await中的任务和await外的任务是并发的,但await中的任务之间是根据队列顺序执行的详见。使用: SendPort newSendPort; static int num = 0; //该方法内部运行在MainIsolate Future<void> test() async { //创建接收端口 Re原创 2022-04-15 09:52:09 · 224 阅读 · 0 评论 -
Flutter抓包
前言:通过Charles进行抓包步骤:1、查看Charles代理地址Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser2、配置代理 (_dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (HttpClient client) {原创 2022-04-11 16:48:29 · 2433 阅读 · 0 评论 -
Future
Future是通过Event队列(先进先出)处理的异步任务。因此需要注意:future并非并发执行,而是按加入到Event队列顺序执行,下面的例子即可说明。 void main(){ Future.delayed(Duration(seconds: 1), (){ print("*******事件1开始"); }); Future((){ print("*******事件2开始"); sleep(Duration(seconds: 5));原创 2022-04-08 15:31:18 · 249 阅读 · 0 评论 -
Stream
前言:Stream和Future均属于dart.async下的核心库,是dart提供的异步操作类。正文:一、Stream创建方式1、Stream.fromFuture通过future对象创建Stream.fromFuture(init(1));//初始化函数Future init(int a) async{ await Future.delayed(Duration(seconds: 10 - a));}2、Stream.fromIterable通过集合创建Strea原创 2021-12-23 11:52:56 · 1224 阅读 · 0 评论 -
async、await
前言:1、问题1:在shared_preferences存储着是否登录的状态,然后根据状态决定跳转的页面,但获取该状态是异步,而页面需要同步方式获取Weight。解决:对shared_preferences在页面运行前进行初始化,将异步转换为同步。class SpUtil { static SharedPreferences _sp; static Future init() async{ _sp = await SharedPreferences.getInstance(原创 2021-10-21 12:11:36 · 124 阅读 · 0 评论 -
dart函数参数
1、函数作为类参数class Test { //声明函数类型参数 int Function(int one, int two) add = (int a, int b) { return a + b; }; test(){ //调用函数 add(1, 2); }}2、函数声明别名,简化class Test { //通过别名声明函数类型参数 Add add = (int a, int b) { return a + b;原创 2021-08-17 18:27:19 · 534 阅读 · 0 评论 -
Flutter json实例化
前言:通过flutter自带的json.decode(String jsonStr)方法,只需import 'dart:convert'即可,但该实例为Map类型,需要通过key获取属性,容易写错key导致问题,下面介绍将map转成我们想要的实例类。方法一:在线通过json字符串转实例类通过https://javiercbk.github.io/json_to_dart/将json字符串生成实例类,然后调用该类的fromJson(Map<String, dynamic> json)将生成原创 2021-03-08 19:18:18 · 886 阅读 · 0 评论 -
dart单例
一、创建class HttpRequest { //实例唯一 static HttpRequest _httpRequest; //隐藏构造方法 HttpRequest._internal() { //进行初始化操作 } //工厂方法提供该类实例 factory HttpRequest() { if(_httpRequest == null){ _httpRequest = new HttpRequest(); } ret原创 2021-03-04 11:18:28 · 139 阅读 · 1 评论 -
路由管理
一、直接启动方式(类似class显示启动)1、Navigator.push(BuildContext context, Route<T> route)启动新页面,通过新页面构造方法进行传参class HomePager extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( tit..原创 2020-12-29 00:12:40 · 256 阅读 · 0 评论 -
Widget 间通信
需求:父控件(StatelessWidget)中有两个子控件(点击其中一个控件,在另外一个控件显示点击次数)分析:由于父控件是StatelessWidget,需要可点击的控件来控制显示控件的更新状态方法。实现:1、创建继承ValueNotifier的NumberController2、父控件定义NumberController3、NumberText中对NumberController添加监听器,进行更新UI4、FloatingActionButton中控制NumberControl原创 2020-10-21 18:46:02 · 671 阅读 · 0 评论 -
flutter中嵌入原生Android View
一、创建Android原生View1、选中android目录下任意文件,点击右上角出现的“Open for Editing in Android Studio”2、在新打开的窗口里,app项目下创建继承PlatformView 的AndroidView/** * messenger flutter与原生通讯需要该参数 * viewId 控件唯一标识 * args 初始化参数 */class AndroidView(context: Context?, me原创 2020-10-21 16:46:54 · 821 阅读 · 1 评论 -
AnimationController
需求:通过AnimationController实现控件平移动画效果。核心代码:class RowState extends State<Row> with TickerProviderStateMixin{ double paddingLeft = 150; AnimationController animationController; @override void initState() { animationController = Animation原创 2020-10-16 17:45:01 · 1836 阅读 · 0 评论 -
Flutter笔记(二):Flutter基础
1、程序入口main.dart2、使用三方开源包(在https://pub.dev/flutter查找开源包)(1)在pubspec.yaml添加依赖,如导入english_words(2)单击Android studio编辑视图右上角的Packages get,将依赖安装到项目中,控制台会打印(3)在lib/main.dart中, 引入english_wo...原创 2019-09-19 18:12:23 · 183 阅读 · 0 评论 -
Flutter笔记(一):Flutter安装及创建项目
一、安装Flutter1、下载flutter SDk压缩包:https://github.com/flutter/flutter/releases(国内被墙,从GitHub下载)2、配置系统环境变量:(1)将flutter SDK解压目录下的bin文件路径配置到系统变量Path中(2)系统变量里配置镜像(国内访问flutter受限,可以使用Flutter社区和上海交通大学Linux...原创 2019-05-20 00:36:52 · 260 阅读 · 0 评论