Flutter 爬坑杂记

最近一直在重构项目,也就没有好好写了。今天抽空,记录一下自己在项目的中碰到的一些问题。

1:flutter_cupertino_date_picker 报错问题
DiagnosticableMixin.png

修改为:
Diagnosticable.png

Error: Type 'DiagnosticableMixin' not found. class DateTimePickerTheme with DiagnosticableMixin 。 这个报错我是在Flutter 1.20之后版本碰到的。因为DatePickerTheme的DiagnosticableMixin在flutter v1.15.21版本发生了变更,由DiagnosticableMixin改为了Diagnosticable。所以需要在DateTimePickerTheme中将DiagnosticableMixin改成Diagnosticable。网上有说改了也没用的,暂时还没碰到,所以不太清楚。
附上:GitHub issues

2:关于Easyrefresh不再支持本地化

在重构Flutter项目时,因为一些插件文字是英文的。所以就添加了本地化。但是发现EasyRefresh在添加GlobalEasyRefreshLocalizations.delegate时一直报错,import 'package:flutter_easyrefresh/easy_refresh.dart' 也没有被引用。就觉得很奇怪,因为之前就是那么用的。然后去GitHub看了一下,发现是在新版的EasyRefresh中,作者不再维护支持本地化了Easyrefresh:

添加国际化支持.png
解决方式有两种:
1:按照上面提示的,自行设置ClassicalHeader和ClassicalFooter:
ClassicalHeader设置.png

2:直接去到header.dart / footer.dart里面,直接修改:
header.dart直接修改.png

3:在Flutter中使用本地推送

目前在项目中我用到的是:flutter_local_notifications: ^0.8.0 。使用方式也简单,在pubspec.yaml中导入插件,然后upgrade。然后就是引入项目了。不过中间有一些注意点,比如安卓的权限管理设置:
在android-->app-->src-->main-->AndroidManifest.xml中添加


    
    
    

另外我在使用的时候是单独用一个dart文件写了个单利,再初始化。然后在socket收到消息的是时候调用。

4:Flutter中在listview滑动时出现_positions.isNotEmpty异常解决办法

在做聊天室功能时,animateTo / jumpTo 到最底部的时候出现这个报错,虽然不会导致崩溃。但是看着碍眼。感兴趣的可以在scrollController 里面全局搜索_positions.isNotEmpty。就能找到这个错误了。
解决方法就是在执行animateTo / jumpTo 方法之前加个判断if(_scrollController.hasClients).

5:Flutter在listview中,如何获取当前所在position位置

我是直接在initState的时候,给listview所在的scrollview添加了一个监听。

_scrollController.addListener(_listViewOffsetPosition); // 监听所在listView的当前位置
  // Todo 监听listView滚动的当前位置
  void _listViewOffsetPosition() {
    _currentPosition = _scrollController.offset ~/ (MediaQuery.of(context).size.height ) ; 
  }

今天暂时就更这五条了。以后碰到了新问题再加上来。如果本文对你有所帮助,记得点个赞咧。

你可能感兴趣的:(Flutter 爬坑杂记)