我将值存储在名为的页面中page1.dart。我想从page2.dart或访问存储的值page3.dart。我该如何实现?
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), ); } }