Navigator.push中未定义上下文



我正在创建一个可以在多个页面上使用的自定义AppBar。customappbar.dart

class CustomAppBar extends AppBar {
CustomAppBar({Key key, Widget title})
: super(
key: key,
title: title,
actions: <Widget>[
IconButton(
icon: Icon(Icons.directions_car),
onPressed: () {
Navigator.push(
context, //UNDEFINED
MaterialPageRoute(
builder: (context) => NewPage(),
),
);
},
),
],
);
}

这是一个它将走向何方的例子。newpage.dart

class _ NewPageState extends State<NewPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CashOnHandAppBar(
title: Text('New Page'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[],
),
),
);
}
}

上下文越来越未定义。是否缺少生成方法?

如果您正在扩展AppBar类,它将不适用于自定义应用程序-您必须扩展StatelessWidget并为自定义应用程序实现PreferredSizeWidget类以下是自定义appbar的工作示例:-

import 'package:flutter/material.dart';
class SimpleAppBar extends StatelessWidget implements PreferredSizeWidget {
final String _title;
final bool centerTitle;
SimpleAppBar(this._title, {this.centerTitle = false, Key key})
: preferredSize = Size.fromHeight(56.0),
super(key: key);
@override
final Size preferredSize; // default is 56.0
@override
Widget build(BuildContext context) {
return AppBar(
title: Text(_title),
centerTitle: centerTitle,
);
}
}

并将函数引用传递给类构造函数,而不是直接将函数添加到自定义的appbar中需要通过以下功能添加参考:-

onPressed: () {
Navigator.push(
context, //UNDEFINED
MaterialPageRoute(
builder: (context) => NewPage(),
),

最新更新