Flutter GetX GetStorage 保存和读取对象

15 min read

使用 JSON 字符串作为中间的介质

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await GetStorage.init();
  runApp(const MyApp());
}
import 'dart:covert';

class Person {
  final String name;
  final int age;

  Person({required this.name, required this.age});
  
  Map<String, dynamic> toMap() {
     return {
       "name": name,
       "age": age,
     };
  }

  String toJson() => json.encode(toMap());

  factory Person.fromMap(Map<String, dynamic> map) {
    return Person(
      name: map["name"],
      age: map["age"],
    );
  }
 factory Person.fromJson(String value) {
   return Person.fromMap(json.decode(value));
 }
}
class MyCheckClass {
  static final personBox = GetStorage();

// personBox.read('person') == null return false after second run this function. and again return TRUE after close the app
  static checkGetStorage() {
    Person person = Person(name: "Water", age: 30);
    if (personBox.read('person') == null) {
      personBox.write('person', person.toJson());
    }
  }
}