通过继承实现统一的导航栏
通过继承实现统一的导航栏
通过继承实现统一的导航栏
统一的导航栏样式,你可以通过创建一个继承自 StatelessWidget 或 StatefulWidget 的基类来实现类似于 iOS 开发中的 BaseViewController。在这个基类中,你可以统一配置页面的背景颜色、导航栏等公共逻辑。示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import 'package:flutter/material.dart';
/// 基类
class BasePage extends StatelessWidget {
final String title;
final Widget child;
const BasePage({
Key? key,
required this.title,
required this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),
backgroundColor: Colors.blue, // 可以在这里统一配置导航栏样式
),
backgroundColor: Colors.grey[200], // 统一背景色
body: child, // 页面具体内容
);
}
}
然后你可以这样使用这个基类,创建子类MyPage,返回父类:
1
2
3
4
5
6
7
8
9
10
11
class MyPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BasePage(
title: lang('我的页面'),
child: Center(
child: Text(lang('这是页面内容')),
),
);
}
}
子类中需要用的组件,在父类里面通过 export 引用:
1
export 'lang_manager.dart';
通过这种方式,你可以把公共配置放在 BasePage 中,而各个页面只需要关注具体的内容。类似于 iOS 的 BaseViewController,这种方式实现了代码复用和样式统一。
本文由作者按照 CC BY 4.0 进行授权