一:第一步:Main.dart界面

import 'package:flutter/material.dart';import 'package:flutter_first/storage/storage_sp.dart';void main() {  runApp(MyApp());}class MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    return MaterialApp(      title: "SharedPreferences示例",      theme: ThemeData(primarySwatch: Colors.blue),      home: StorageSp(),    );  }}

第二步:SharePrefences 数据存储界面

import 'package:flutter/material.dart';import 'package:shared_preferences/shared_preferences.dart';class StorageSp extends StatefulWidget {  const StorageSp({Key? key}) : super(key: key);  @override  State<StatefulWidget> createState() => _StorageSpState();}class _StorageSpState extends State<StorageSp> {  //第一步:实例化本地存储对象  Future<SharedPreferences> _prefs = SharedPreferences.getInstance();  //昵称及抉择语言的值 文本输出的控制器  var controller = TextEditingController();  //定义变量 value_dart,value_js,value_java  bool value_dart = false;  bool value_js = false;  bool value_java = false;  @override  void initState() {    super.initState();    initFromCache();  }  @override  Widget build(BuildContext context) {    return Scaffold(      appBar: AppBar(        title: Text("SharedPreferences示例"),      ),      body: Container(        padding: EdgeInsets.all(15),        child: Column(          crossAxisAlignment: CrossAxisAlignment.center,          children: <Widget>[            TextField(              controller: controller, //一个自定义控制器,可实现相似TextEditingController              decoration: InputDecoration(                  //一个输入框                  labelText: "昵称:",                  hintText: "请输出名称"),            ),            Text("你喜爱的编程语言"),            Row(              mainAxisAlignment: MainAxisAlignment.spaceBetween,              children: <Widget>[                Text("Dart"),                //Switch 示意开关组件  value选中的值,onChanged 扭转时触发的事件                Switch(                    value: value_dart,                    onChanged: (isChanged) {                      //设置状态扭转要存储的值                      setState(() {                        this.value_dart = isChanged;                      });                    })              ],            ),            Row(              mainAxisAlignment: MainAxisAlignment.spaceBetween,              children: <Widget>[                Text("JavaScript"),                Switch(                    value: value_js,                    onChanged: (isChanged){                      //设置状态扭转要存储的值                      setState(() {                        this.value_js=isChanged;                      });                    })              ],            ),            Row(              mainAxisAlignment: MainAxisAlignment.spaceBetween,              children: <Widget>[                Text("Java"),                Switch(                    value: value_java,                    onChanged: (isChanged){                      //设置状态扭转要存储的值                      setState(() {                        this.value_java=isChanged;                      });                    })              ],            ),            MaterialButton(              child: Text("保留"),                onPressed: (){                saveInfo(controller.text);                })          ],        ),      ),    );  }  //从缓存中获取信息填充  void initFromCache() async {    //获取SharedPreferences对象    final SharedPreferences prefs = await _prefs;    //依据键(key)获取本地存储的值(value)    final value_nickname = prefs.getString("key_nickname");    final value_dart = prefs.getBool("key_dart");    final value_js = prefs.getBool("key_js");    final value_java = prefs.getBool("key_java");    //获取到缓存中的值后,应用setState更新界面信息    setState(() {      controller.text = (value_nickname == null ? "" : value_nickname);      this.value_dart = (value_dart == null ? false : value_dart);      this.value_js = (value_js == null ? false : value_js);      this.value_java = (value_java == null ? false : value_java);    });  }  //保留界面的输出抉择信息  void saveInfo(String value_nickname)  async{    final SharedPreferences prefs=await _prefs;    prefs.setString("key_nickname", value_nickname);    prefs.setBool("key_dart", value_dart);    prefs.setBool("key_js", value_js);    prefs.setBool("key_java", value_java);  }}

在Android下的数据data/data/包名/shared_prefs

<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map>    <string name="flutter.key_nickname">Rocky</string>    <boolean name="flutter.key_js" value="true" />    <boolean name="flutter.key_java" value="true" />    <boolean name="flutter.key_dart" value="true" /></map>