Select Git revision
application_config_definition.dart
-
Benoît Harrault authoredBenoît Harrault authored
application_navigation_definition.dart 3.22 KiB
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
/// A screen item,
///
/// Normalized screens are: "activity", "settings" and "about".
///
/// These are set in [ApplicationNavigation] with
/// - [ApplicationNavigation.screenActivity]
/// - [ApplicationNavigation.screenSettings]
/// - [ApplicationNavigation.screenAbout]
///
class ScreenItem {
final String code;
final Icon icon;
final Widget Function({required ApplicationConfigDefinition appConfig}) screen;
const ScreenItem({
required this.code,
required this.icon,
required this.screen,
});
}
/// A page in [ScreenItem] given in [ApplicationNavigation.screenActivity]
///
/// These are set in [ApplicationNavigation] with
/// [ApplicationNavigation.activityPages].
///
class ActivityPageItem {
final String code;
final Icon? icon;
final Widget Function({required ApplicationConfigDefinition appConfig}) builder;
const ActivityPageItem({
required this.code,
this.icon,
required this.builder,
});
factory ActivityPageItem.empty() {
return ActivityPageItem(
code: '',
builder: ({required ApplicationConfigDefinition appConfig}) => Text(''),
);
}
}
/// Custom AppBar configuration
///
class AppBarConfiguration {
final bool? hideApplicationTitle;
final bool? pushQuitActivityButtonLeft;
final bool? hideQuitActivityButton;
final List<AppBarButton> Function(BuildContext context)? topBarButtonsBuilder;
const AppBarConfiguration({
this.hideApplicationTitle = false,
this.pushQuitActivityButtonLeft = false,
this.hideQuitActivityButton = false,
this.topBarButtonsBuilder,
});
}
/// Custom AppBar button (will generate a widget [IconButton])
///
class AppBarButton {
final Icon icon;
final Function(BuildContext context)? onPressed;