Flutter appbar 工具类

返回按钮图片修改,statusbar字体颜色设定,appbar背景色修改,删除阴影等。

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:music_nft/views/nft_text.dart';

/// [NFTtext] 使用的是文本工具封装类,自己也可以替换。 **字体相关**
class NFTappbar extends StatelessWidget implements PreferredSizeWidget {
  final Color color;
  final String? title;
  final List<Widget> actions;
  final Brightness statusBarBrightness;

  const NFTappbar({
    super.key,
    this.color = Colors.transparent,
    this.title,
    this.actions = const [],
    this.statusBarBrightness = Brightness.dark,
  });

  @override
  Widget build(BuildContext context) {
    final ModalRoute<dynamic>? parentRoute = ModalRoute.of(context);
    final bool canPop = parentRoute?.canPop ?? false;

    return AppBar(
      backgroundColor: color,
      automaticallyImplyLeading: false,
      shadowColor: Colors.transparent,
      leading: canPop ? buildBackButton(context) : null,
      title: NFTtext.semiBold(title ?? '', fontSize: 20),
      actions: actions,
      systemOverlayStyle:
          SystemUiOverlayStyle(statusBarBrightness: statusBarBrightness),
    );
  }

  Widget buildBackButton(BuildContext context) {
    return IconButton(
      splashRadius: 17,
      iconSize: 17,
      onPressed: () {
        Navigator.maybePop(context);
      },
      icon: Image.asset('images/wallet/return.png'),
    );
  }

  @override
  Size get preferredSize => const Size.fromHeight(kToolbarHeight);
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容