首页 > 解决方案 > 带有新文件飞镖的页面路由

问题描述

如何使用MaterialPageRoute新文件飞镖?

我的代码:

主要.dart

import 'package:flutter/material.dart';
import 'package:hello_world/settings_page.dart';

void main() => runApp(Belajar());

class Belajar extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          leading: Icon(Icons.android),
          title: Text('Hello World'),
          actions: [
            IconButton(
              icon: Icon(Icons.settings),
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) {
                      return SettingsPage();
                    },
                  ),
                );
              },
            )
          ],
        ),
      ),
    );
  }
}

settings_page.dart

import 'package:flutter/material.dart';

class SettingsPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: () {
            Navigator.pop(context);
          },
        ),
      ),
    );
  }
}

我试过上面的代码。但是,给我一个错误:

Navigator operation requested with a context that does not include a Navigator.

我的代码有什么问题?

标签: flutterdart

解决方案


你只缺少一件事

MaterialApp(
 home:Builder(
  //use this context to push new route
  builder:(context){
   return Scaffold(
    appBar://..
   );
  }
 )
)

这里builder将引入一个新的上下文,其中将包含由material app引入的导航器


推荐阅读