鸿蒙NEXT+Flutter开发7-存储应用设置项

鸿蒙NEXT+Flutter开发7-存储应用设置项

存储设置项可以让应用记住用户的个性化偏好。例如,用户可以根据自己的习惯设置应用的主题(如亮色模式或暗色模式)、字体大小、语言等。当用户下次打开应用时,这些设置能够自动应用,提供熟悉且舒适的使用体验。如果没有存储这些设置,用户每次打开应用都需要重新配置,这会极大地影响用户体验。
另外,APP要上架应用市场,在第一次下载并进入首页前,需要展示用户协议和隐私政策提醒,同意之后,之后运行就不需要提醒,这就需要记录一下,APP是否是第一次运行。

1.GetX与shared_preferences插件

GetX 是一个功能强大的 Flutter 插件,它提供了状态管理、路由管理、依赖注入等多种功能。其主要优势在于简单易用、性能高效,可以大大简化 Flutter 应用的开发流程。GetX插件作为一款纯dart语言实现的插件,在鸿蒙NEXT系统中可以直接使用。
Flutter插件中,能够提供存储功能的有很多,笔者更推荐使用shared_preferences进行简单设置的存储。鸿蒙NEXT社区对该插件做了适配工作,使其可以应用于鸿蒙NEXT系统。

插件配置

在pubspec.yaml中添加下面的代码,加入getx和shared_preferences的引用:

  get: ^4.6.5
  shared_preferences:
    git:
      url: "https://gitee.com/openharmony-sig/flutter_packages.git"
      path: "packages/shared_preferences/shared_preferences"
同步插件

在终端输入如下命令,同步新加入的插件:

flutter pub get

2.存储功能的代码实现

我们中lib目录下新建common目录,将一些常用功能实现放入其中。其中再新建services目录存放服务功能,store目录里保存存储相关功能的文件。目录结构如下图所示:
QQ_1730171420260.png
其中services.dart主要功能为导出所有服务项,代码如下:

library services;

export './storage.dart';

storage.dart提供了基础的存储服务,代码如下:

import 'package:get/get.dart';
import 'package:shared_preferences/shared_preferences.dart';

class StorageService extends GetxService {
  static StorageService get to => Get.find();
  late final SharedPreferences _prefs;

  Future<StorageService> init() async {
    _prefs = await SharedPreferences.getInstance();
    return this;
  }

  Future<bool> setString(String key, String value) async {
    return await _prefs.setString(key, value);
  }

  Future<bool> setBool(String key, bool value) async {
    return await _prefs.setBool(key, value);
  }

  Future<bool> setList(String key, List<String> value) async {
    return await _prefs.setStringList(key, value);
  }

  String getString(String key, {String def = ""}) {
    return _prefs.getString(key) ?? def;
  }

  bool getBool(String key, {bool def = false}) {
    return _prefs.getBool(key) ?? def;
  }

  List<String> getList(String key, {List<String> def = const []}) {
    return _prefs.getStringList(key) ?? def;
  }

  Future<bool> remove(String key) async {
    return await _prefs.remove(key);
  }
}

store.dart代码如下:

library store;

export './config.dart';

config.dart提供配置项管理功能,代码如下:

import 'package:get/get.dart';

import '../services/storage.dart';

class ConfigStore extends GetxController {
  static ConfigStore get to => Get.find();

  // 用户是否第一次打开app
  static const String keyStorageIsFirstOpen = 'is_first_open';
  bool _isFirstOpen = true;
  bool get isFirstOpen => _isFirstOpen;

  // 标记用户已打开APP
  Future<bool> saveAlreadyOpen() {
    return StorageService.to.setBool(keyStorageIsFirstOpen, false);
  }

  @override
  void onInit() {
    super.onInit();
    _isFirstOpen = StorageService.to.getBool(keyStorageIsFirstOpen, def: true);
  }
}

3.存储功能的初始化

通过上面的步骤,存储的功能已经实现了。在main.dart中,添加下面的代码,将对存储功能进行初始化,以便后期调用对应的功能。

import 'common/services/services.dart';
import 'common/store/store.dart';

Future init() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化存储服务
  await Get.putAsync<StorageService>(() => StorageService().init());
  // 创建配置库
  Get.put<ConfigStore>(ConfigStore());
}

void main() async {
  await init();

  runApp(const MyApp());
}

本章简单介绍了为什么要存储设置项、GetX与shared_preferences插件配置,以及存储功能的实现与初始化。接下来的文章继续结合GetX插件,利用上面的配置项存储功能,实现用户协议和隐私政策提醒页面。

<think>好的,我现在需要处理用户关于Flutter框架如何适配华为鸿蒙操作系统的问题。首先,我需要理解用户的具体需求。用户可能正在开发一个跨平台应用,希望将现有的Flutter项目迁移到HarmonyOS NEXT,或者想了解如何开始这样的适配工作。 接下来,我要回顾提供的引用内容。引用[1]到[4]主要涉及HarmonyOS NEXTFlutter的混合开发环境安装、兼容性、编译配置以及具体步骤。例如,引用[3]提到Flutter项目成功编译到HarmonyOS NEXT,并给出了工具链的配置信息,这说明官方可能已经提供了一些支持。引用[4]则提到创建新的Flutter工程并执行命令,这可能是适配的初步步骤。 我需要确认当前的适配方案是否官方支持。根据引用[2],HarmonyOS NEXT是否支持Flutter,是否有文档,解决方案可能指向官方文档或社区资源。用户可能关心的是官方指南是否存在,或者是否需要依赖第三方解决方案。 然后,我需要整理适配的关键步骤。根据引用[4],创建新工程是一个步骤,但可能还需要配置SDK路径、工具链如Hvigorw等,如引用[3]所示的环境配置。此外,可能需要处理平台特定的代码或依赖项,确保Flutter的渲染引擎与HarmonyOS的图形接口兼容。 另外,性能优化和API兼容性也是需要考虑的。HarmonyOS可能有不同的系统API,Flutter插件可能需要适配这些接口,比如网络、存储、传感器等。同时,UI组件可能需要调整以适应鸿蒙的设计规范。 用户还可能关心实际案例,是否有成功接入的应用,以及开发过程中可能遇到的常见问题。引用[3]提到运行后的正确配置效果,这说明存在可行的配置方法,但可能需要详细的步骤指导。 最后,需要确保回答结构清晰,分步骤说明适配流程,引用相关文档和资源,并预见到用户可能提出的进一步问题,如性能调优、特定功能适配等,从而生成相关问题供用户参考。</think>### Flutter框架适配华为鸿蒙操作系统的开发指南与解决方案 #### 1. **环境配置与工具链支持** Flutter适配HarmonyOS NEXT需要**安装特定的SDK和工具链**。根据官方文档,需配置OpenHarmony SDK路径,并通过DevEco Studio集成开发环境进行管理。例如,引用[3]中提到工具链包含`Hvigorw`构建工具,需确保Node.js和Ohpm包管理器的版本兼容性: ```bash # 示例环境配置路径 OpenHarmony Sdk路径:/Users/apple/Desktop/Code/Harmony/command-line-tools/sdk Ohpm版本:5.0.2 Node版本:v18.20.1 ``` #### 2. **项目初始化与工程结构适配** 使用Flutter命令行工具**创建新项目**,并调整工程结构以匹配HarmonyOS的模块化要求: ```bash flutter create my_harmony_app # 创建新Flutter工程[^4] ``` 需在`pubspec.yaml`中添加HarmonyOS特定依赖,并检查`android`目录替换为HarmonyOS模块(如`entry`模块)。 #### 3. **渲染引擎与API兼容性** - **渲染层适配**:Flutter的Skia引擎需与HarmonyOS的图形子系统(如`@ohos.graphics`)对接,确保UI渲染无异常。 - **平台通道(Platform Channel)**:通过`MethodChannel`调用HarmonyOS原生能力(如传感器、通知),需编写Java/ArkTS插件代码: ```dart // Flutter端调用示例 const channel = MethodChannel('com.example/native'); final result = await channel.invokeMethod('getHarmonyOSVersion'); ``` #### 4. **构建与调试** 使用**Hvigor构建系统**替代Gradle,配置`build-profile.json`定义编译任务: ```json { "targets": [ { "name": "entry", "type": "application", "dependencies": ["flutter"] } ] } ``` 通过DevEco Studio的**真机调试功能**验证运行效果,如引用[3]中提到的设备运行截图。 #### 5. **官方支持与社区资源** 目前HarmonyOS NEXTFlutter的适配**仍处于早期阶段**,官方文档尚未完全开放,但可通过[OpenHarmony社区](https://gitee.com/openharmony)获取实验性支持。引用[2]指出已有部分开发者成功接入,建议关注华为开发者联盟的更新。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值