Flutter工作日记

291 阅读4分钟

2022.6.28

做了个静态页面,熟悉项目大概框架。

  1. 适配插件flutter_screenutil.dart,init后直接在数字后加.w(宽度)或.h(高度)
```加入设计稿尺寸

    ScreenUtil.init(
      context,
      designSize: const Size(375, 667),
    );
  1. 配置OutlineButton的圆角和背景颜色
style: ButtonStyle(
    /// 设置按钮的圆角
    shape: MaterialStateProperty.all(RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(17))),
    backgroundColor:
        MaterialStateProperty.all(const Color(0xFFD88D00))),
                  ),

2022.6.30

  • 工作内容:了解grpc(rpc-remote procedure call远程过程调用,对比于通信协议http,rpc是一个完整的远程调用过程,包含接口规范、传输协议、数据序列号和反序列化规范),grpc是谷歌的开源rpc框架,基于http/2协议,其拥有多路复用、服务器推送、头部压缩、二进制传输。
  • 接口调用流程,先new一个provider,再通过provider调用客户端接口,还要将参数request包装最后放进接口调用。
  • EventBus事件总线,可以在全局定义(Get.put(()=>EventBus()),然后新开一个类作为事件,然后可以分别在两个组件通过事件传递数据或信息,var eventBus = Get.find<EventBus>(); eventBus.fire(InvitaCodeEvent()); _eventBus.on<InvitaCodeEvent>().listen((event) {})

2022.7.5

  1. 工作内容:编写tab控制不同listView的页面,编写逻辑接口。 注意,初始化变量时可以生成实例对象以免报错,在接口调用时clear()后重新赋值
  • 对于tab分类下,使用同一个widget的组件但不同的加载数据时,首先编写一个Model作为接口数据类,
  • 接着拿到分类数量后用一个List分别创建并装载Model实例(带id),接着遍历所有分类,并调用每个ListView的接口赋值给每一个Model实例,保证每个页面的model都已经赋值。
  • 最后根据分类tab循环创建builder,每个上拉刷新的controller也要放到循环里面生成找到对应实例并赋值使用。
graph TD
变量多且繁杂时创建有一个Model类---初始化变量---如果初始Widget需要build,则赋值实例化对象 --> 获取数据后,若有多个ListView则循环生成多个Model实例并放进一个数组,还要赋值每一个Model实例 --> 最后循环创建builder
  1. 上拉刷新下拉加载插件:pull_to_refresh_flutter3: ^2.0.1

  2. 页面缓存。indexStack和AutomaticKeepClientMixin. 4.加载loading——明天写

2022.7.6

  1. 数据加载前设置loading,设置全局变量bool,用CircularProgressIndicator().

  2. platform.isAndroid判断安卓ios

  3. MediaQuery.of(context).size.width获取设备信息

  4. 查找bug,先debug是否运行到函数里面。

2022.7.9

  1. 解决ListView.Builder中不设置高度报错,设置高度无法动态展示的bug,原因是不能在itemBuilder里面嵌套row,否则必须设定高度。

  2. 解决虚线圆点布局问题,利用插件dotted_decoration、tab_indicator_styler,虚线边框使用。

  3. sticky_headers插件,吸顶效果,之后看看源码实现

  4. 造轮子咨询页。

2022.7.20

这周开始赶项目了,29号前完成第一阶段。 这段时间主要完成评论点赞列表,了解getx的用法,多语言配置的流程,使用.obs可以实现部分响应式,如果使用setState就去整个组件重新build。 这两天在做走马灯组件,之后要自造一个走马灯组件使用。

2022.7.27

  • 今天入职刚好一个月,已经熟悉项目框架和熟练接口调用流程,了解项目多语言和主题配置,全局依赖注入等等。
  • 记录这个月遇到两个比较大的问题:
  1. ListView滑动时监听每一个item,获取index,而且每个item高度不一致---等待fix
  1. Drawer需要多层嵌套时返回直接收起整个Drawer,目前包裹一层自定义DrawerController后,返回多了一层遮罩层,这是因为Scaffold里面内置写死了一层Controller,导致两层返回。------等待fix

2022.8.17

1.完成Combo详情页功能,包含有折线图、倒计时、各种底部弹窗(学到了底部输入弹窗,设置autofocus就好)评论、点赞、海报分享存储本地相册。

  • 有个sb问题困扰我一星期,obx不能放在samrtfresh插件里面,否则无法触发滑动加载。
  • 还有获取手机本地储存权限,permission——handler插件,需要设置系列参数,首页根据插件realme配置好两步,如何会发现无法获取插件函数,此时可能是gradle版本不够,升级到7.0,接着将 android.jetifier.blacklist=bcprov-jdk15on改为 android.jetifier.ignorelist=bcprov-jdk15on,这是因为7.0没有blacklist.
  1. 还有个跳转h5没解决,好像比较麻烦要配置封装调用js,这个之后要学习并记录才行。
  2. 还有极光推送也要学习并记录。