大家好,大家好,我仍然在学习颤振,为什么在我的代码中按下更改页面的函数不起作用,我试着使用routeName流来更改每个页面,下面是我的代码
sign_in_screen.dart
import 'package:flutter/material.dart';
class SignInScreen extends StatelessWidget {
static String routeName = "/sign_in";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
);
}
}routs.dart
import 'package:accone/screens/splash/splash_screen.dart';
import 'package:accone/screens/sign_in/sign_in_screen.dart';
import 'package:flutter/widgets.dart';
final Map<String, WidgetBuilder> routes = {
SplashScreen.routeName: (context) => SplashScreen(),
SignInScreen.routeName: (context) => SignInScreen(),
};和body.dart上的按钮
@override
Widget build(BuildContext context) {
return SafeArea(
child: SizedBox(
width: double.infinity,
child: Column(
children: <Widget>[
Expanded(
flex: 3,
child: PageView.builder(
onPageChanged: (value) {
setState(() {
currentPage = value;
});
},
itemCount: splashData.length,
itemBuilder: (context, index) => SplashContent(
image: splashData[index]["image"] ?? '',
text: splashData[index]["text"] ?? '')),
),
Expanded(
flex: 2,
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: getProportionateScreenWidth(20)),
child: Column(
children: <Widget>[
Spacer(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(
splashData.length,
(index) => buildDot(index: index),
),
),
Spacer(flex: 3),
DefaultButton(
text: 'Join Now',
press: () {
Navigator.pushNamed(
context, SignInScreen.routeName);
},
),
Spacer(),
],
),
),
)
],
)));
}在body.dart上,我已经导入了所需的所有包
import 'package:accone/components/default_button.dart';
import 'package:accone/constants.dart';
import 'package:accone/screens/sign_in/sign_in_screen.dart';
import 'package:accone/screens/splash/components/splash_content.dart';
import 'package:accone/size_config.dart';
import 'package:flutter/material.dart';在按钮上,我试图使用Navigator.pushNamed、Navigator.pushReplacementNamed(context, '/route')和Navigator.pushAndRemoveUntil,但仍然不能在移动上更改页面
发布于 2021-12-05 11:13:21
这起作用了,但我将按钮代码更改为:
ElevatedButton(
onPressed: () {
Navigator.pushNamed(
context, SignInScreen.routeName);
},
child: const Text('Join Now'),
),发布于 2021-12-05 08:46:39
请将这些路由添加到您的MaterialApp Widget中,您可以按照以下代码来实现:
return MaterialApp(
title: 'Your App',
debugShowCheckedModeBanner: false,
initialRoute: SplashScreen.routeName,
routes: {
SplashScreen.routeName: (context) => SplashScreen(),
SignInScreen.routeName: (context) => SignInScreen(),
},
);您可以在MaterialApp文件中找到main.dart小部件。
https://stackoverflow.com/questions/70231522
复制相似问题