我如何将 get_measurements_page.dart 作为 show_measurements_page.dart 的提货单?

how do i make get_measurements_page.dart as lading to show_measurements_page.dart?

我想要 user_detailo_page,按下按钮时。显示 get_measurements_page 加载到 show_measurements_page.

此处示例代码 UserDetailPage。

    import 'package:flutter/material.dart';
    import 'package:bodymeasure/raised_button_gradient.dart';
    import 'package:image_picker/image_picker.dart';
    import 'package:bodymeasure/get_measurements_page.dart';
    import 'package:bodymeasure/show_measurements_page.dart';
    import 'package:tflite_flutter/tflite_flutter.dart';
    
    class UserDetailPage extends StatefulWidget {
      static String tag = 'user-detail-page';
    
      const UserDetailPage({Key? key}) : super(key: key);
      @override
      _UserDetailPageState createState() => _UserDetailPageState();
      }

代码 get_measurements_page 作为加载。

import 'package:flutter/material.dart';

class GetMeasurementsPage extends StatefulWidget {
  static String tag = 'get-measurement-page';

  const GetMeasurementsPage({
    Key? key }) : super(key: key);
  @override
  _GetMeasurementsPageState createState() => _GetMeasurementsPageState();
}

代码show_measurements_page.

import 'dart:convert';
import 'package:bodymeasure/history_page.dart';
import 'package:flutter/material.dart';

class ShowMeasurementsPage extends StatefulWidget {
  static String tag = 'show-measurements-page';
  final String? name;
  final String? nohap;
  final String? tinggi;
  const ShowMeasurementsPage({
    Key? key,
    this.name,
    this.nohap,
    this.tinggi,
  }) : super(key: key);
  @override
  _ShowMeasurementsPageState createState() => _ShowMeasurementsPageState();
}

我试过这段代码,但当我按下后退按钮时,它又重新加载了。

onPressed: () async {
                setState(() => isLoading = true);
                Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => 
GetMeasurementsPage()));
                await Future.delayed(const Duration(seconds: 3));
                setState(() => isLoading = false);
                Navigator.push(
                        context,
                        MaterialPageRoute(
                          builder: (context) => ShowMeasurementsPage(
                              name: name.text,
                              nohap: nohap.text,
                              tinggi: tinggi.text),
                        ))
                    .whenComplete(() =>
                        {name.clear(), nohap.clear(), 
tinggi.clear()});
}

代码运行后,您的导航堆栈如下所示:

UserDetailsPage --> GetMeasurementsPage --> ShowMeasurementsPage

所以当你从ShowMeasurementsPage返回时,你当然会再次看到GetMeasurementsPage。解决此问题的最简单方法是将 ShowMeasurementsPage 推送为替换:

Navigator.pushReplacement(
  context,
  MaterialPageRoute(...),
);

同时查看参考资料:https://api.flutter.dev/flutter/widgets/Navigator/pushReplacement.html

这应该用 ShowMeasurementsPage 替换 GetMeasurementsPage