2020年11月24日
在工程文件夹内,git管理,忽略pubspec.lock文件 ,运行 flutter pub get /ios文件夹里,忽略Pods文件夹,Podfile.lock文件,*.xcworkspace文件,运行 pod install……
阅读全文
2020年11月24日
ssh-add ~/.ssh/id_rsa ssh添加id_rsa文件即可……
阅读全文
2020年11月23日
今天配置环境变量的时候,因为失误不小心让zsh整个失效了, zsh: command not found:xxx 补救办法,在命令行输入 PATH=/bin:/usr/bin:/usr/local/bin:${PATH} 恢复正常 失误的地方在于配置flutter时路径少输入一个$符号,在$HOME/.zshrc文件中 //正确 export PATH="$PATH:[PATH_TO_FLUTTER_GIT_DIRECTORY]/flutter/bin" //错误 export PATH="PATH:[PATH_TO_FLUTTER_GIT_DIRECTORY]/flutter/bin" //注意 PATH_TO_FLUTTER_GIT_DIRECTORY 是需要输入全路径的,/User/xxx/xxx,不是~符号!……
阅读全文
2020年11月20日
LRU cache stand for Least Recently Used Cache,which evict least recently used entry.As Cache purpose is to provide fast and efficient way of retrieving data, it need to meet certain requirement. Some of the Requirement are fixed size:cache need to have some bounds to limit memory usages. Fast Access:Cache Inert and lookup operation should be fast, preferably O(1) time Replacement of Entry in case,Memory Limit is reached:A cache shoule have efficient algorithm to evict when memory is full. In case of LRU cache we evict least recently used entry so we have to keep track of recently used entries, entries which have not been used from long time and which have been used recently, plus lookup and insertion operation should be fast enough . When we think about O(1) lookup, obvious data structure comes in our mind is HashMap.HashMap provide……
阅读全文
2020年11月20日
body: CustomScrollView( slivers: <Widget>[ SliverGrid.count( //具体的配置 ), //列表 SliverFixedExtentList( delegate: SliverChildBuilderDelegate( (context, index) => ConversationListItem( delegate: this, conversation: conList[index] ), childCount: conList.length, ), itemExtent: 100, ), ], ), 解析:大的容器叫做custom scroll view,子控件叫做slivers,是一个数组,在数组里面从上到下排布sliver控件,有sliver grid,有sliver fixed extent list 效果大概长这样……
阅读全文
2020年11月19日
在ios中,通常用block或者代理去实现,在flutter中,外部实现一个方法,把这个方法传给按钮,按钮内部用callback接受,ontap方法调用即可,实现如下 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; //定义函数类型 typedef StringValue = void Function(String); class ImageBtn extends StatelessWidget { //作为属性 StringValue callback; ImageBtn({Key key,this.callback}) : super(key: key); @override Widget build(BuildContext context) { return new GestureDetector( onTap: () { print('MyButton was tappedq!'); //调用 this.callback("testString"); }, child: ...……
阅读全文
2020年11月19日
Column( children: <Widget>[ Expanded(child: Image.asset('assets/images/$imageName.png') ), Text( this.model.title, style: TextStyle( fontSize: 15, color: Colors.white, ), ), ], ), 注解: column是一个垂直的容器,子控件放在children里面 要想让图片居中,需要放在expanded容器里面,官方定义:expanded is a widget that expands a child of a row,column,or flex so that the child fills the available space.……
阅读全文
2020年11月19日
ModalRoute.of(context).isCurrent 解析:由于页面的组合都是由路由管理的,所以把当前的context传给路由,让路由去判断是否在最顶端,这个路由叫做模态路由……
阅读全文
2020年11月18日
在博客中看到这张有趣的图片,自己加了点扩展 自动证明了 (a+b)^2 = a^2 + 2ab + b^2 (a-b)^2 = a^2 - 2ab + b^2……
阅读全文
2020年11月18日
原因:点击本身出发一次监听,随之产生的动画效果再次出发监听,如果是滑动,仅触发一次监听 解决:看下点击的索引和动画值对不对,过滤掉点击的listen,只显示动画的listen _tabController.addListener(() { if(_tabController.index == _tabController.animation.value){ int index = _tabController.index; print("====================当前点击了$index===……
阅读全文