Flutter:从其他页面访问存储的Sharedpreference值

我将值存储在名为的页面中page1.dart。我想从page2.dart或访问存储的值page3.dart。我该如何实现?

回答:

我在第一个屏幕中存储了一个字符串,然后通过以下代码从第二个屏幕中检索了存储的值

第1页:

import 'package:flutter/material.dart';

import 'package:shared_preferences/shared_preferences.dart';

import 'package:trial/class2.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

home: MyHomePage(),

);

}

}

class MyHomePage extends StatefulWidget {

@override

_MyHomePageState createState() => _MyHomePageState();

}

class _MyHomePageState extends State<MyHomePage> {

String _email = '';

@override

void initState() {

super.initState();

_loadCounter();

}

_loadCounter() async {

SharedPreferences prefs = await SharedPreferences.getInstance();

setState(() {

_email = (prefs.getString('email') ?? '');

});

}

_incrementCounter() async {

SharedPreferences prefs = await SharedPreferences.getInstance();

setState(() {

_email = "a@gmail.com";

});

prefs.setString('email', _email);

}

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: Text("title"),

),

body: Center(

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

Text(

'$_email',

),

new RaisedButton(

child: new Text("next2"),

onPressed: () {

Navigator.push(context,

new MaterialPageRoute(builder: (context) => new Next()));

},

),

],

),

),

floatingActionButton: FloatingActionButton(

onPressed: _incrementCounter,

child: Icon(Icons.add),

),

);

}

}

第2页:

import 'package:flutter/material.dart';

import 'package:shared_preferences/shared_preferences.dart';

String _email='';

class Next extends StatefulWidget {

@override

_NextState createState() => _NextState();

}

class _NextState extends State<Next> {

@override

void initState() {

super.initState();

_loadCounter();

}

_loadCounter() async {

SharedPreferences prefs = await SharedPreferences.getInstance();

setState(() {

_email = (prefs.getString('email')??'');

});

}

@override

Widget build(BuildContext context) {

return Container(

child: new Text("read value from sharepreference is:"+_email),

);

}

}

以上是 Flutter:从其他页面访问存储的Sharedpreference值 的全部内容, 来源链接: utcz.com/qa/408206.html

回到顶部