[Day06] Flutter with GetX shared_preference

Shared preference

App关闭再次启动後,需要保存的资料可以先保存在shared_preference
Android 也叫Shared preferences, iOS是UserDefault
首先建立一个Class, 并使instance不会重new的singleton
在init() 里先取得instance SharedPreferences.getInstance()
假设会存accessToken 和 userName 这两个属性

import 'package:it_home/utils/static_name.dart';
import 'package:shared_preferences/shared_preferences.dart';

class UserDefault {
  static UserDefault instance = UserDefault._internal();
  factory UserDefault() => instance;

  UserDefault._internal();
  late SharedPreferences _prefs;

  init() async {
    _prefs = await SharedPreferences.getInstance();
  }

  String get accessToken => _prefs.getString(ACCESS_TOKEN) ?? "";
  set accessToken(String? value) {
    if (value != null) {
      _prefs.setString(ACCESS_TOKEN, value);
    }
  }

  set userName(String name) => _prefs.setString(USER_NAME, name);
  String get userName => _prefs.getString(USER_NAME) ?? "";

}

开一个空的 static_name.dart 档(或者自己习惯的命名)
并将hard code的字串写在另一个档案里(避免再次用到的时候写错)
(ACCESS_TOKEN, USER_NAME)

const String ACCESS_TOKEN = 'accessToken';
const String USER_NAME = 'user_name';

接着在main.dart 里面新增
在app启动时 将SharedPreferences 先new一次

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await UserDefault().init();
  runApp(MyApp());
}

最後使用时呼叫UserDefault().属性 进行读或写

  @override
  void onInit() {
    print(UserDefault().userName);
    UserDefault().userName = "it_home_user";
    print(UserDefault().userName);

    super.onInit();
  }

本篇的GitHub source code

下一篇将为大家介绍 image_picker


<<:  [Day 5] 阿嬷都看得懂的 HTML 标签怎麽写

>>:  从零开始的8-bit迷宫探险【Level 12】把迷宫涂上喜欢的颜色

Day27|脸部保养

进入十月~我开始临时抱佛脚 除了维持写文以来的努力喝水和少量运动 我也开始去做一些脸部保养课程~ B...

Powershell 入门参数属性(1)

对于 Powershell 脚本的参数,我们可以通过一些属性来限制参数。 今天我们就来看看,怎么通过...

[Day16] 注册工具Postman – 安装、介绍Postman

今天终於要进入测试API的阶段啦~~~ 不过在进入测试阶段之前,还是要来介绍一下我们的工具要怎麽使用...

Day 03:转吧转吧七彩霓虹灯之 p10k

更新 我把从第一天到现在每天的 Home 目录都放上 GitHub 了,README.md 里面有...

Day 12 AWS云端实作起手式第二弹 开始拼拼图吧

来到了第二弹,我们今天会有三个步骤: 建立EC2跟DB的机器,以及设定EC2专用的IAM Role。...