我如何从不同的页面获取数据并使用 sharedpreferences 在 flutter 中将该数据呈现到另一个页面

How i can get data from the diffrent pages and render that data into another page using shared preferences in flutter

这里我有一个注册流程,当我填写第一页的所有详细信息时,当我按下下一步时,它将存储到共享首选项并转到下一页。填满所有页面和页面末尾后,我想使用共享首选项快速打印所有数据。

这是项目的完整源代码,您可以在其中获取包含代码的所有页面, https://github.com/rutvikgumasana/signup

我建议您应该只使用一页,并为此使用 PageViewIndexedStack。 使用 IndexedStack,您一次只能显示一个子窗口小部件,并在单击按钮时切换当前索引。但在这种情况下,您必须自己创建动画,因为 IndexedStack 不提供默认动画。

如果您使用 PageView,您将拥有默认动画,也可以在单击按钮时切换它。 它还为您提供滑动手势,可以使用

禁用

PageView(physics:new NeverScrollableScrollPhysics())

试试这个, 创建一个对象 class(POJO Class) 并将数据存储在共享首选项中,每当用户单击下一步/提交按钮时。然后,到达最终屏幕后,从首选项中获取数据并显示。

只需将导航中的数据从一个 class 传递到另一个 class,看看下面的代码我做了一些更改

报名模特class

  import 'dart:convert';

  SignUpModel signUpModelFromJson(String str) => SignUpModel.fromJson(json.decode(str));

  String signUpModelToJson(SignUpModel data) => json.encode(data.toJson());

  class SignUpModel {
 String businessLegalName;
 int businessPhoneNo;
 int businessYear;

 SignUpModel({
   this.businessLegalName,
   this.businessPhoneNo,
   this.businessYear,
 });

 factory SignUpModel.fromJson(Map<String, dynamic> json) => SignUpModel(
      businessLegalName: json["business_legal_name"] == null ? null :    json["business_legal_name"],
      businessPhoneNo: json["business_phone_no"] == null ? null : json["business_phone_no"],
      businessYear: json["business_year"] == null ? null : json["business_year"],
    );

 Map<String, dynamic> toJson() => {
   "business_legal_name": businessLegalName == null ? null : businessLegalName,
   "business_phone_no": businessPhoneNo == null ? null : businessPhoneNo,
   "business_year": businessYear == null ? null : businessYear,
 };
  }

BspSignupPage 中的更改 class

SignUpModel model = SignUpModel();
                  model.businessLegalName = clrbusinessname.text;
                  model.businessPhoneNo = clrphone.text as int;
                  model.businessYear = clrestablishedyear.text as int;
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => BspUnlicensedSignupPage(
                        signUpModel: model,
                      ),
                    ),
                  );

BspUnlicensedSignupPage 中的更改

class BspUnlicensedSignupPage extends StatefulWidget {
  static const String routeName = "/bspUnlicensedSignup";
  final SignUpModel signUpModel;

  BspUnlicensedSignupPage({
    Key key,
    @required this.signUpModel,
  }) : super(key: key);

  @override
  _BspUnlicensedSignupPageState createState() =>
      _BspUnlicensedSignupPageState();
}

并处于初始状态方法

@override
  void initState() {
    // TODO: implement initState
    super.initState();
    debugPrint('Page1 Data: ${widget.signUpModel.businessLegalName}');
  }