當我單擊“繼續”按鈕時,它沒有將我導航到登錄螢屏。我嘗試了多次,但它沒有作業,有時會顯示上述錯誤。
什么應該是正確的代碼讓我導航到登錄螢屏。“Navigator.pushNamed(context, #我應該在這里寫什么? )。” (另外,如果需要,我也可以提供 loginPage 代碼。)
**Body.dart**
```
import 'package:flutter/material.dart';
import 'package:flutter_catalog/constants.dart';
import 'package:flutter_catalog/default_button.dart';
import 'package:flutter_catalog/pages/login_page.dart';
import 'package:flutter_catalog/size_config.dart';
import '../components/splash_content.dart';
class Body extends StatefulWidget {
@override
_BodyState createState() => _BodyState();
}
class _BodyState extends State<Body> {
int currentPage = 0;
@override
Widget build(BuildContext context) {
return SafeArea(
child: SizedBox(
width: double.infinity,
child: Column(
children: <Widget>[
Expanded(
flex: 5,
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: "Continue",
press: () {
Navigator.pushNamed(context,**#What should I write here?**);
},
),
Spacer(),
],
),
),
),
],
),
),
);
}
}
```
**Routes.dart**
```
class MyRoutes{
static String loginRoute = "/login";
static String homeRoute = "/home";
static String HomeDetailRoute = "/detail";
static String cartRoute = "/cart";
static String welcomescreenRoute = "/welcome";
static String SplashScreenRoute = "/splash";
}
**main.dart**
void main() {
setPathUrlStrategy();
runApp(VxState(store: MyStore(), child: MyApp()));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var vxNavigator = VxNavigator(routes: {
"/": (_, __) => MaterialPage(child: SplashScreen()),
MyRoutes.homeRoute: (_, __) => MaterialPage(child: HomePage()),
MyRoutes.SplashScreenRoute: (_, __) => MaterialPage(child: SplashScreen()),
MyRoutes.HomeDetailRoute: (uri, _) {
final catalog = (VxState.store as MyStore)
.catalog
.getById(int.parse(uri.queryParameters["id"]!));
return MaterialPage(
child: HomeDetailPage(
catalog: catalog,
),
);
},
MyRoutes.loginRoute: (_, __) => MaterialPage(child: LoginPage()),
MyRoutes.cartRoute: (_, __) => MaterialPage(child: CartPage()),
});
(VxState.store as MyStore).navigator = vxNavigator;
uj5u.com熱心網友回復:
您似乎使用的是 VelocityX 導航器,而不是 Flutter 中包含的標準導航器。因此,導航應通過 VxNavigator 處理。
如VxNavigator 檔案中所述,您可以像這樣推送路由:
context.vxNav.push(Uri(path: MyRoutes.loginRoute));
// or VxNavigator.of(context), or (VxState.store as MyStore).navigator
uj5u.com熱心網友回復:
您需要在 MaterialApp (main.dart) 中包含路由:
routes: {
// When navigating to the "/" route, build the FirstScreen widget.
'/': (context) => const FirstScreen(),
// When navigating to the "/second" route, build the SecondScreen widget.
'/second': (context) => const SecondScreen(),
// *Your Body*
'/body': (context) => Body(), // No const when statefulWidget
},
然后您可以輕松訪問它 Navigator.pushNamed(context, '/body');
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/523021.html
