最近一直在重构项目,也就没有好好写简书了。今天抽空,记录一下自己在项目的中碰到的一些问题。
1:flutter_cupertino_date_picker 报错问题 DiagnosticableMixin.png
修改为: Diagnosticable.pngError: 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中添加
<!--本地通知所添加的-->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
另外我在使用的时候是单独用一个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 ) ;
}
今天暂时就更这五条了。以后碰到了新问题再加上来。如果本文对你有所帮助,记得点个赞咧。
网友评论