【发布时间】:2021-04-02 20:56:12
【问题描述】:
我有这段代码,我的应用程序中有侧边栏(抽屉)。我创建了一个单独的文件drawer.dart,看起来有点像这样:
import 'package:flutter/material.dart';
class DrawerClass extends StatefulWidget {
@override
_DrawerClassState createState() => _DrawerClassState();
}
class _DrawerClassState extends State<DrawerClass> {
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: [
DrawerHeader(
child: CircleAvatar(
backgroundColor: Theme.of(context).primaryColor,
radius: 30,
child: Icon(
Icons.pets,
size: 60,
color: Colors.white,
),
),
),
ListTile(
leading: Icon(Icons.home),
title: Text("Home"),
onTap: () {
Navigator.pushReplacementNamed(context, "/home");
},
),
ListTile(
leading: Icon(
Icons.report,
),
title: Text("Report"),
onTap: () {
Navigator.pushReplacementNamed(context, "/report");
},
),
ListTile(
leading: Icon(
Icons.settings,
),
title: Text("Settings"),
onTap: () {
Navigator.pop(context);
},
),
],
),
);
}
}
现在我有三个不同的文件:home.dart、report.dart、settings.dart。此重构代码在settings.dart 中使用时将完美运行,但在其他两个文件中则不行。例如,如果我在report.dart 中使用它,我必须将其 onTap 状态更改为Navigator.pop。我需要在所有其他 3 个文件中使用 drawer.dart,仅更改每个文件中的 onTap 状态。
任何帮助将不胜感激:)
【问题讨论】:
标签: flutter dart refactoring navigation-drawer