type
status
date
slug
summary
tags
category
icon
password
这些年,移动端UI的深色模式还是比较常见你的,IOS在系统级别已经率先支持了,Flutter作为一款优秀的跨端UI框架,在处理深色模式上是比较简单的。
notion image

Brightness

Flutter中有一个Brightness的概念,用来表示主题和颜色的亮暗模式。
Flutter针对主题也提供了封装:
访问方式如下:
我们首先想一下,要实现一个切换深色主题的功能的步骤是什么?
  1. 设置页:进行浅色/深色模式切换,并进行持久化,以便app重启之后还是生效的;
  1. App:启动的时候获取持久化的浅色/深色模式,并应用到app的主题上;
  1. 切换时实时刷新主题的深浅模式;

1. 进行深浅色模式的切换

<img src="https://oss.jiangkang.tech/jk/shense2.png" style="zoom:50%;" />
这里使用SharedPreferences来进行持久化,代码比较简单:

App启动时获取持久化的深浅色模式

深浅色模式改变时,实时刷新APP

从前面的两段代码可以看出,我们使用了Provider。
这里我们可以把Provider当做一个单例模式,一处改变,全局生效。

源码

Flutter-TimelineFlutter时间处理
Loading...