我如何将 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
。
我想要 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
。