Flutter 使用Android原生SharedPreferences存储

先打开andorid中的代码 进行修改 不然打开后他是爆红的状态 

参考文章flutter 新建项目 - Android代码 Unresolved reference: FlutterActivity_Bingo丶Zzzzzzzzzzzz的博客-CSDN博客

这是我android中的代码 编写完成后 一定要在android端编译 不然不会成功

package com.example.module_d_lenovo_jiangsu
import android.content.Context
import android.os.Bundle
import io.flutter.embedding.android.FlutterActivity
import io.flutter.plugin.common.MethodChannel


class MainActivity : FlutterActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //初始化sp
        val sharedPreferences =getSharedPreferences("sp",Context.MODE_PRIVATE)
        //flutter与android端之间的通信
        MethodChannel(flutterEngine!!.dartExecutor.binaryMessenger, "shared_preferences_plugin")
            .setMethodCallHandler { call, result ->
                //方法名称
                if (call.method.equals("setString")) {
                    //获取flutter端传人的key
                    val key: String = call.argument("key")!!
                    //获取flutter端传人的value
                    val value: String = call.argument("value")!!
                    //sp提交
                    sharedPreferences.edit().putString(key,value).apply()
                    //方法名称
                } else if (call.method=="getString") {
                    //获取key
                    val key = call.argument<String>("key")
                    //key对应的value 得出结果
                    val value = sharedPreferences.getString(key,"")
                    //返回value的结果
                    result.success(value)
                }
            }
    }
}

这是flutter中的代码 是与android通信的关键

import 'package:flutter/services.dart';

class SharedPreferencesPlugin {
  // 创建MethodChannel对象,用于Flutter应用程序和原生代码之间的通信
  static const MethodChannel _channel =
      const MethodChannel('shared_preferences_plugin');

  // 定义一个静态方法,用于向SharedPreferences中写入String类型的值
  static setString(String key, String value) async {
    // 调用MethodChannel的invokeMethod方法,向原生代码发送请求
    await _channel.invokeMethod('setString', {'key': key, 'value': value});
  }

  // 定义一个静态方法,用于从SharedPreferences中读取String类型的值
  static getString(String key) async {
    // 调用MethodChannel的invokeMethod方法,向原生代码发送请求,并返回结果
    return await _channel.invokeMethod('getString', {'key': key});
  }
}

最后就是他们的使用了

    //获取value
   String value = await SharedPreferencesPlugin.getString("key");
   //存储
   SharedPreferencesPlugin.setString("yd", "1");
   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值