0

私はフラッターが初めてで、main.dart から切り離された共通の appBar を持っているので、すべての画面で使用できます。これは appBar を含む dart ファイルです。

import 'package:flutter/material.dart';
import 'package:voota/utils/Hex2Color.dart';
import 'package:intl/intl.dart';

class BaseAppBar extends StatelessWidget implements PreferredSizeWidget {
  final Color bgColor = HexToColor('#508bbb');
  final String title;
  final AppBar appBar;
  final List<Widget> widgets;

  BaseAppBar({Key key, this.title, this.appBar, this.widgets})
     : super(key: key);

  @override
  Widget build(BuildContext context) {
    DateTime now = DateTime.now();
    String formattedDate = DateFormat('MMMM d, y').format(now);

    return AppBar(
      title: RichText(
        text: TextSpan(
            text: 'VOOTA ' + title,
            style: TextStyle(
              fontSize: 15.0,
              color: Colors.white,
            ),
            children: [
              TextSpan(text: '\n'),
              TextSpan(
                text: formattedDate,
                style: TextStyle(
                  fontSize: 10.0,
                  color: Colors.white,
                ),
              ),
            ]),
        textAlign: TextAlign.center,
      ),
      centerTitle: true,
      backgroundColor: bgColor,
      elevation: 0,
      //actions: widgets,
    );
  }

  @override
  Size get preferredSize => new Size.fromHeight(appBar.preferredSize.height);
}

appBar が定義されている dart ファイルをインポートするだけなので、すべての画面で次のように同じ appBar を使用できます。

Widget build(BuildContext context) {
return Scaffold(
    appBar: BaseAppBar(title: title, appBar: AppBar()),
    ....

今、いくつかの画面にアクション ボタン (オーバーフロー ドロップダウン メニュー) が必要です。ただし、アクションは画面ごとに異なります。どうすればこれを定義できますか? ある画面では、選択メニューに更新のみが表示され、別の画面では、更新とログアウトとアクティブ化のオプションが異なるルートで表示されます。そして、ダッシュボードにはまったくアクションがありません...ヘルプ、アドバイス、またはリンクについてはThx ;)

4

2 に答える 2