You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何判断sharedPreferences字符串列表值是否为空并跳转登录页

Flutter SharedPreferences 字符串列表判空及跳转实现

你的原有代码存在一个潜在风险:如果获取到的列表本身为空,直接访问索引[0]会触发数组越界崩溃。以下是覆盖所有空场景的完整实现:

import 'package:shared_preferences/shared_preferences.dart';

// 业务逻辑处代码
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
final myStringList = sharedPreferences.getStringList('my_sharedPreferences_list') ?? [];

// 全场景判空逻辑,覆盖列表为空、第一个元素为null/空字符串/全空格的所有情况
if (myStringList.firstOrNull?.trim().isEmpty ?? true) {
  print('> EMAIL not found!');
  Navigator.of(context).pushReplacement(MaterialPageRoute(
      builder: (context) => Login()
  ));
} else {
  print(myStringList[0]);
}

逻辑说明

  • firstOrNull 会在列表为空时直接返回null,避免数组越界报错
  • ?.trim().isEmpty 会先对第一个元素做去空格处理,再判断是否为空字符串,避免全空格的无效值被判定为有效
  • ?? true 表示当前面的表达式返回null(也就是列表为空)时,默认判定为满足空条件,触发跳转逻辑

如果你的Dart版本低于2.12,不支持firstOrNull语法,可以替换为传统判空写法:

if (myStringList.isEmpty || myStringList[0].trim().isEmpty) {
  // 跳转逻辑
}

内容的提问来源于stack exchange,提问作者babayaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:06:04