openlp-mobile-remote/lib/src/widgets/bottom_navigation_bar.dart

81 lines
2.7 KiB
Dart

// OpenLP Mobile Remote
// ---------------------------------------------------------------------------
// Copyright (c) 2008-2019 OpenLP Developers
// ---------------------------------------------------------------------------
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
import 'package:flutter/material.dart';
import '../configurations/app_localizations.dart';
import 'display_options_dialog.dart';
import 'show_alert_dialog.dart';
class _Action {
IconData icon;
String title;
VoidCallback callback;
_Action(this.icon, this.title, this.callback);
}
class AppBottomNavigationBar extends StatelessWidget {
final GlobalKey<ScaffoldState> _scaffoldKey;
AppBottomNavigationBar(this._scaffoldKey);
@override
Widget build(BuildContext context) {
final List<_Action> _actions = [
_Action(
Icons.add_alert,
AppLocalizations.of(context).translate('alert'),
() {
showDialog(
context: context,
builder: (context) => ShowAlertDialog(),
);
},
),
_Action(
Icons.personal_video,
AppLocalizations.of(context).translate('display'),
() {
showDialog(
context: context,
builder: (context) => DisplayOptionsDialog(_scaffoldKey),
);
},
),
];
return BottomAppBar(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: _actions
.map((action) => IconButton(
icon: Icon(action.icon),
onPressed: action.callback,
tooltip: action.title,
color: Theme.of(context).accentColor,
))
.toList(),
),
);
}
}