文章

通过继承实现统一的导航栏

通过继承实现统一的导航栏

通过继承实现统一的导航栏

统一的导航栏样式,你可以通过创建一个继承自 StatelessWidgetStatefulWidget 的基类来实现类似于 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 进行授权