消息推送flutterFluttet

Flutter高阶用法之仿写bibili

2022-03-12  本文已影响0人  StevenHu_Sir

项目框架及架构

image.png

技术栈:

1.必备技能

Flutter集成与打包Android应用
Flutter集成与打包iOS应用

2.核心原理

3.网络和存储

4.路由&导航

5.图片&动画

6.视频技术

7.状态管理

8.性能调优

Flutter 性能优化流畅度优化方案

Flutter包体大小优化

10.稳定性优化

Flutter异常捕获

Flutter测试之道

11.架构技术

组件化方案

Flutter网络层框架hi_net架构

image.png

统一缓存管理框架hi_cache架构

12.软技能

2.快捷键

①AndroidStudio

image.png

②VSCode

image.png

补充

列表图片的优化:

图片内存缓存

Flutter图片是支持内存缓存的,默认情况下Flutter支持1000张图片缓存到本地,并且这些图片的总计大小不得超过100MB。如果超过那么Flutter会根据LRU算法移除先前缓存的图片。所以我们可以适当调整缓存大小来增加列表图片加载的性能:

PaintingBinding.instance.imageCache.maximumSize= 2000;//最多2000张
PaintingBinding.instance.imageCache.maximunSizeBytes = 200 << 20;//最大缓存阈值

注意:图片缓存会对内存造成一定的压力,不建议内存缓存设置过大

图片本地缓存

如果想增加本地缓存可以借助插件来完成:

# 图片加载
cached_network_image: ^3.1.0

列表常驻内存

默认情况下放在PageView中的页面切换走时会被销毁,再次切换回来会导致页面被重新创建,如果页面中有列表那么整个列表将被重新加载,降低用户体验。
解决:让页面的State实现 AutomaticKeepAliveClientMixin:

class _HomeTabPageState extends State<HomeTabPage> with AutomaticKeepAliveClientMixin
{
  
  @override
  bool get wantKeepAlive => true;
}

列表数量不足时无法下拉刷新和上拉加载更多,怎么处理?

StaggeredGridView.countBuilder(
  physics: const AlwaysScrollableScrollPhysics()
)

HiState处理页面状态异常

ListView顶部多出间距处理

MediaQuery.removePadding(
  removeTop: true,
  context: context,
  child:ListView()
)

图片渐变加载处理

transparent_image: ^2.0.0-nullsafety.0

解决iOS9/Android无法铭文传输的问题【http链接】

iOS

Info.plist中添加

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

Android

AndroidManifest.xml中添加

android:usesCleartextTraffic="true"
tools:targetApi="28"

如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.flutter_bili">
      <application
        android:label="flutter_bili"
        android:icon="@mipmap/ic_launcher"
        android:usesCleartextTraffic="true"
        tools:targetApi="28"
        >

源码地址:
https://gitee.com/flutter_steven/flutter_bilibili.git

上一篇下一篇

猜你喜欢

热点阅读