先打开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");