mmkv在dart中的使用
Dart端
pubspec.yaml
dependencies:
mmkv: ">=1.2.8"
...
複製程式碼
ios
為了避免與iOS上的本地庫名稱“ libMMKV.so”衝突,我們需要將外掛名稱“ mmkv”更改為“ mmkvflutter”。
對於純flutter應用程式,請將此功能fix_mmkv_plugin_name()新增到ios / Podfile,在呼叫任何flutter_xxx()函式之前先呼叫它。 執行pod install。
def fix_mmkv_plugin_name(flutter_application_path)
is_module = false
plugin_deps_file = File.expand_path(File.join(flutter_application_path, '..', '.flutter-plugins-dependencies'))
if not File.exists?(plugin_deps_file)
is_module = true;
plugin_deps_file = File.expand_path(File.join(flutter_application_path, '.flutter-plugins-dependencies'))
end
plugin_deps = JSON.parse(File.read(plugin_deps_file)).dig('plugins', 'ios') || []
plugin_deps.each do |plugin|
if plugin['name'] == 'mmkv' || plugin['name'] == 'mmkvflutter'
require File.expand_path(File.join(plugin['path'], 'tool', 'mmkvpodhelper.rb'))
mmkv_fix_plugin_name(flutter_application_path, is_module)
return
end
end
raise "找不到任何mmkv外掛依賴項。 如果您是手動執行Pod安裝,請確保先執行flutter pub get"
end
fix_mmkv_plugin_name(File.dirname(File.realpath(__FILE__)))
複製程式碼
要將flutter用作現有iOS App的模組,請將上面的功能fix_mmkv_plugin_name()新增到iOS App的Podfile中,在呼叫任何flutter_xxx()函式之前先呼叫它。 執行pod install,我們就準備好了。
def fix_mmkv_plugin_name(flutter_application_path)
.....
end
flutter_application_path = 'path/to/your/flutter_module'
fix_mmkv_plugin_name(flutter_application_path)
複製程式碼
Android
如果您以前在Android應用中使用com.tencent.mmkv,則應轉到com.tencent.mmkv-static。 並且,如果您的應用程式依賴於嵌入com.tencent.mmkv的任何第三個SDK,則可以將以下行新增到build.gradle中,以避免發生衝突:
dependencies {
...
modules {
module("com.tencent:mmkv") {
replacedBy("com.tencent:mmkv-static", "Using mmkv-static for flutter")
}
}
}
複製程式碼
使用
import 'package:mmkv/mmkv.dart';
void main() async {
// must wait for MMKV to finish initialization
final rootDir = await MMKV.initialize();
print('MMKV for flutter with rootDir = $rootDir');
runApp(MyApp());
}
複製程式碼
import 'package:mmkv/mmkv.dart';
var mmkv = MMKV.defaultMMKV();
mmkv.encodeBool('bool', true);
print('bool = ${mmkv.decodeBool('bool')}');
mmkv.encodeInt32('int32', (1<<31) - 1);
print('max int32 = ${mmkv.decodeInt32('int32')}');
mmkv.encodeInt('int', (1<<63) - 1);
print('max int = ${mmkv.decodeInt('int')}');
String str = 'Hello Flutter from MMKV';
mmkv.encodeString('string', str);
print('string = ${mmkv.decodeString('string')}');
str = 'Hello Flutter from MMKV with bytes';
var bytes = MMBuffer.fromList(Utf8Encoder().convert(str));
mmkv.encodeBytes('bytes', bytes);
bytes.destroy();
bytes = mmkv.decodeBytes('bytes');
print('bytes = ${Utf8Decoder().convert(bytes.asList())}');
bytes.destroy();
複製程式碼