Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
commit
36bcabcdfd
16 changed files with 237 additions and 187 deletions
|
@ -226,6 +226,11 @@ class Dependencies {
|
||||||
license: mit,
|
license: mit,
|
||||||
sourceUrl: 'https://github.com/ziofat/material_design_icons_flutter',
|
sourceUrl: 'https://github.com/ziofat/material_design_icons_flutter',
|
||||||
),
|
),
|
||||||
|
Dependency(
|
||||||
|
name: 'Material Symbols Icons for Flutter',
|
||||||
|
license: apache2,
|
||||||
|
sourceUrl: 'https://github.com/timmaffett/material_symbols_icons',
|
||||||
|
),
|
||||||
Dependency(
|
Dependency(
|
||||||
name: 'Overlay Support',
|
name: 'Overlay Support',
|
||||||
license: apache2,
|
license: apache2,
|
||||||
|
|
|
@ -1,213 +1,211 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||||
|
import 'package:material_symbols_icons/symbols.dart';
|
||||||
|
|
||||||
class AIcons {
|
class AIcons {
|
||||||
static const allCollection = Icons.collections_outlined;
|
static const allCollection = Symbols.collections;
|
||||||
static const image = Icons.photo_outlined;
|
static const image = Symbols.photo;
|
||||||
static const video = Icons.movie_outlined;
|
static const video = Symbols.movie;
|
||||||
static const vector = Icons.code_outlined;
|
static const vector = Symbols.code;
|
||||||
|
|
||||||
static const accessibility = Icons.accessibility_new_outlined;
|
static const accessibility = Symbols.accessibility_new;
|
||||||
static const android = Icons.android;
|
static const android = Symbols.android;
|
||||||
static const app = Icons.apps_outlined;
|
static const app = Symbols.apps;
|
||||||
static const apply = Icons.done_outlined;
|
static const apply = Symbols.done;
|
||||||
static const aspectRatio = Icons.aspect_ratio_outlined;
|
static const aspectRatio = Symbols.aspect_ratio;
|
||||||
static const bin = Icons.delete_outlined;
|
static const bin = Symbols.delete;
|
||||||
static const broken = Icons.broken_image_outlined;
|
static const broken = Symbols.broken_image;
|
||||||
static const brightnessMin = Icons.brightness_low_outlined;
|
static const brightnessMin = Symbols.brightness_low;
|
||||||
static const brightnessMax = Icons.brightness_high_outlined;
|
static const brightnessMax = Symbols.brightness_high;
|
||||||
static const checked = Icons.done_outlined;
|
static const checked = Symbols.done;
|
||||||
|
static const circle = Symbols.fiber_manual_record;
|
||||||
static final count = MdiIcons.counter;
|
static final count = MdiIcons.counter;
|
||||||
static const counter = Icons.plus_one_outlined;
|
static const counter = Symbols.plus_one;
|
||||||
static const description = Icons.description_outlined;
|
static const description = Symbols.description;
|
||||||
static const descriptionUntitled = Icons.comments_disabled_outlined;
|
static const descriptionUntitled = Symbols.comments_disabled;
|
||||||
static const disc = Icons.fiber_manual_record;
|
static const display = Symbols.light_mode;
|
||||||
static const display = Icons.light_mode_outlined;
|
static const duration = Symbols.timelapse;
|
||||||
static const duration = Icons.timelapse_outlined;
|
static const error = Symbols.error;
|
||||||
static const error = Icons.error_outline;
|
static const explorer = Symbols.account_tree;
|
||||||
static const explorer = Icons.account_tree_outlined;
|
static const folder = Symbols.folder;
|
||||||
static const folder = Icons.folder_outlined;
|
|
||||||
static final github = MdiIcons.github;
|
static final github = MdiIcons.github;
|
||||||
static const home = Icons.home_outlined;
|
static const home = Symbols.home;
|
||||||
|
|
||||||
// as of Flutter v3.16.3,
|
// as of Flutter v3.16.3,
|
||||||
// `label_important_outlined` matches text direction but is filled
|
// `label_important_outlined` matches text direction but is filled
|
||||||
// `label_important_outline` is outlined but does not match text direction
|
// `label_important_outline` is outlined but does not match text direction
|
||||||
static const important = IconData(labelImportantOutlineCodePoint, fontFamily: materialIconsFontFamily, matchTextDirection: true);
|
static const important = IconData(labelImportantOutlineCodePoint, fontFamily: materialIconsFontFamily, matchTextDirection: true);
|
||||||
|
|
||||||
static const language = Icons.translate_outlined;
|
static const language = Symbols.translate;
|
||||||
static final legal = MdiIcons.scaleBalance;
|
static final legal = MdiIcons.scaleBalance;
|
||||||
static const mimeType = Icons.code_outlined;
|
static const mimeType = Symbols.code;
|
||||||
static const name = Icons.abc_outlined;
|
static const name = Symbols.abc;
|
||||||
static const newTier = Icons.fiber_new_outlined;
|
static const newTier = Symbols.fiber_new;
|
||||||
static const opacity = Icons.opacity;
|
static const opacity = Symbols.opacity;
|
||||||
static const palette = Icons.palette_outlined;
|
static const palette = Symbols.palette;
|
||||||
static final privacy = MdiIcons.shieldAccountOutline;
|
static const privacy = Symbols.shield_person;
|
||||||
static const rating = Icons.star_border_outlined;
|
static const rating = Symbols.star;
|
||||||
static const ratingFull = Icons.star;
|
|
||||||
static final ratingRejected = MdiIcons.starMinusOutline;
|
static final ratingRejected = MdiIcons.starMinusOutline;
|
||||||
static final ratingUnrated = MdiIcons.starOffOutline;
|
static final ratingUnrated = MdiIcons.starOffOutline;
|
||||||
static const raw = Icons.raw_on_outlined;
|
static const raw = Symbols.raw_on;
|
||||||
static const sensorControlEnabled = Icons.explore_outlined;
|
static const sensorControlEnabled = Symbols.explore;
|
||||||
static const sensorControlDisabled = Icons.explore_off_outlined;
|
static const sensorControlDisabled = Symbols.explore_off;
|
||||||
static const settings = Icons.settings_outlined;
|
static const settings = Symbols.settings;
|
||||||
static const shooting = Icons.camera_outlined;
|
static const shooting = Symbols.camera;
|
||||||
static const size = Icons.data_usage_outlined;
|
static const size = Symbols.data_usage;
|
||||||
static const storageCard = Icons.sd_storage_outlined;
|
static const storageCard = Symbols.sd_storage;
|
||||||
static const storageMain = Icons.smartphone_outlined;
|
static const storageMain = Symbols.smartphone;
|
||||||
static const streamVideo = Icons.movie_outlined;
|
static const streamVideo = Symbols.movie;
|
||||||
static const streamAudio = Icons.audiotrack_outlined;
|
static const streamAudio = Symbols.audiotrack;
|
||||||
static const streamText = Icons.closed_caption_outlined;
|
static const streamText = Symbols.closed_caption;
|
||||||
static const tag = Icons.local_offer_outlined;
|
static const tag = Symbols.sell;
|
||||||
static final tagUntagged = MdiIcons.tagOffOutline;
|
static final tagUntagged = MdiIcons.tagOffOutline;
|
||||||
static const text = Icons.format_quote_outlined;
|
static const text = Symbols.format_quote;
|
||||||
static const thumbnails = Icons.grid_on_outlined;
|
static const thumbnails = Symbols.grid_on;
|
||||||
static const volumeMin = Icons.volume_mute_outlined;
|
static const volumeMin = Symbols.volume_mute;
|
||||||
static const volumeMax = Icons.volume_up_outlined;
|
static const volumeMax = Symbols.volume_up;
|
||||||
|
|
||||||
// time/space
|
// time/space
|
||||||
static const date = Icons.calendar_today_outlined;
|
static const date = Symbols.calendar_today;
|
||||||
static const dateByDay = Icons.today_outlined;
|
static const dateByDay = Symbols.today;
|
||||||
static const dateByMonth = Icons.calendar_month_outlined;
|
static const dateByMonth = Symbols.calendar_month;
|
||||||
static const dateRecent = Icons.today_outlined;
|
static const dateRecent = Symbols.today;
|
||||||
static const dateUndated = Icons.event_busy_outlined;
|
static const dateUndated = Symbols.event_busy;
|
||||||
static const geoBounds = Icons.public_outlined;
|
static const geoBounds = Symbols.public;
|
||||||
static const location = Icons.place_outlined;
|
static const location = Symbols.place;
|
||||||
static const locationUnlocated = Icons.location_off_outlined;
|
static const locationUnlocated = Symbols.location_off;
|
||||||
static const country = Icons.flag_outlined;
|
static const country = Symbols.flag;
|
||||||
static const state = Icons.flag_outlined;
|
static const state = Symbols.flag;
|
||||||
static const place = Icons.place_outlined;
|
static const place = Symbols.place;
|
||||||
|
|
||||||
// view
|
// view
|
||||||
static const group = Icons.group_work_outlined;
|
static const group = Symbols.group_work;
|
||||||
static const layout = Icons.grid_view_outlined;
|
static const layout = Symbols.grid_view;
|
||||||
static const layoutMosaic = Icons.view_comfy_outlined;
|
static const layoutMosaic = Symbols.view_comfy;
|
||||||
static const layoutGrid = Icons.view_compact_outlined;
|
static const layoutGrid = Symbols.view_compact;
|
||||||
static const layoutList = Icons.list_outlined;
|
static const layoutList = Symbols.list;
|
||||||
static const sort = Icons.sort_outlined;
|
static const sort = Symbols.sort;
|
||||||
static const sortOrder = Icons.swap_vert_outlined;
|
static const sortOrder = Symbols.swap_vert;
|
||||||
static const thumbnailLarge = Icons.photo_size_select_large_outlined;
|
static const thumbnailLarge = Symbols.photo_size_select_large;
|
||||||
static const thumbnailSmall = Icons.photo_size_select_small_outlined;
|
static const thumbnailSmall = Symbols.photo_size_select_small;
|
||||||
|
|
||||||
// actions
|
// actions
|
||||||
static const add = Icons.add_circle_outline;
|
static const add = Symbols.add_circle;
|
||||||
static const addShortcut = Icons.add_to_home_screen_outlined;
|
static const addShortcut = Symbols.add_to_home_screen;
|
||||||
static const cancel = Icons.cancel_outlined;
|
static const cancel = Symbols.cancel;
|
||||||
static const cast = Icons.cast_outlined;
|
static const cast = Symbols.cast;
|
||||||
static const clear = Icons.clear_outlined;
|
static const clear = Symbols.clear;
|
||||||
static const clipboard = Icons.content_copy_outlined;
|
static const clipboard = Symbols.content_copy;
|
||||||
static const convert = Icons.transform_outlined;
|
static const convert = Symbols.transform;
|
||||||
static final convertToStillImage = MdiIcons.movieRemoveOutline;
|
static final convertToStillImage = MdiIcons.movieRemoveOutline;
|
||||||
static const copy = Icons.file_copy_outlined;
|
static const copy = Symbols.file_copy;
|
||||||
static const debug = Icons.whatshot_outlined;
|
static const debug = Symbols.mode_heat;
|
||||||
static const delete = Icons.delete_outlined;
|
static const delete = Symbols.delete;
|
||||||
static const edit = Icons.edit_outlined;
|
static const edit = Symbols.edit;
|
||||||
static const emptyBin = Icons.delete_sweep_outlined;
|
static const emptyBin = Symbols.delete_sweep;
|
||||||
static const export = Icons.open_with_outlined;
|
static const export = Symbols.open_with;
|
||||||
static final fileExport = MdiIcons.fileExportOutline;
|
static final fileExport = MdiIcons.fileExportOutline;
|
||||||
static final fileImport = MdiIcons.fileImportOutline;
|
static final fileImport = MdiIcons.fileImportOutline;
|
||||||
static const flip = Icons.flip_outlined;
|
static const flip = Symbols.flip;
|
||||||
static const favourite = Icons.favorite_border;
|
static const favourite = Symbols.favorite;
|
||||||
static const favouriteActive = Icons.favorite;
|
static const filter = Symbols.filter_alt;
|
||||||
static final filter = MdiIcons.filterOutline;
|
static const filterOff = Symbols.filter_alt_off;
|
||||||
static final filterOff = MdiIcons.filterOffOutline;
|
static const goUp = Symbols.arrow_upward;
|
||||||
static const goUp = Icons.arrow_upward_outlined;
|
static const hide = Symbols.visibility_off;
|
||||||
static const hide = Icons.visibility_off_outlined;
|
static const info = Symbols.info;
|
||||||
static const info = Icons.info_outlined;
|
static const layers = Symbols.layers;
|
||||||
static const layers = Icons.layers_outlined;
|
static const map = Symbols.map;
|
||||||
static const map = Icons.map_outlined;
|
static const more = Symbols.more_horiz;
|
||||||
static const more = Icons.more_horiz_outlined;
|
|
||||||
static final move = MdiIcons.fileMoveOutline;
|
static final move = MdiIcons.fileMoveOutline;
|
||||||
static const rename = Icons.abc_outlined;
|
static const rename = Symbols.abc;
|
||||||
static const openOutside = Icons.open_in_new_outlined;
|
static const openOutside = Symbols.open_in_new;
|
||||||
static final openVideoPlayer = MdiIcons.openInApp;
|
|
||||||
static final openVideoPart = MdiIcons.moviePlayOutline;
|
static final openVideoPart = MdiIcons.moviePlayOutline;
|
||||||
static const pin = Icons.push_pin_outlined;
|
static const pin = Symbols.keep;
|
||||||
static final unpin = MdiIcons.pinOffOutline;
|
static const unpin = Symbols.keep_off;
|
||||||
static const print = Icons.print_outlined;
|
static const print = Symbols.print;
|
||||||
static const refresh = Icons.refresh_outlined;
|
static const refresh = Symbols.refresh;
|
||||||
static const remove = Icons.remove_outlined;
|
static const remove = Symbols.remove;
|
||||||
static final resetBounds = MdiIcons.rayStartEnd;
|
static final resetBounds = MdiIcons.rayStartEnd;
|
||||||
static const reverse = Icons.invert_colors_outlined;
|
static const reverse = Symbols.invert_colors;
|
||||||
static const reset = Icons.restart_alt_outlined;
|
static const reset = Symbols.restart_alt;
|
||||||
static const restore = Icons.restore_outlined;
|
static const restore = Symbols.restore;
|
||||||
static const rotateLeft = Icons.rotate_left_outlined;
|
static const rotateLeft = Symbols.rotate_left;
|
||||||
static const rotateRight = Icons.rotate_right_outlined;
|
static const rotateRight = Symbols.rotate_right;
|
||||||
static const rotateScreen = Icons.screen_rotation_outlined;
|
static const rotateScreen = Symbols.screen_rotation;
|
||||||
static const search = Icons.search_outlined;
|
static const search = Symbols.search;
|
||||||
static const select = Icons.select_all_outlined;
|
static const select = Symbols.select_all;
|
||||||
static const setAs = Icons.wallpaper_outlined;
|
static const setAs = Symbols.wallpaper;
|
||||||
static final setBoundEnd = MdiIcons.rayEnd;
|
static final setBoundEnd = MdiIcons.rayEnd;
|
||||||
static final setBoundStart = MdiIcons.rayStart;
|
static final setBoundStart = MdiIcons.rayStart;
|
||||||
static final setCover = MdiIcons.imageEditOutline;
|
static final setCover = MdiIcons.imageEditOutline;
|
||||||
static const share = Icons.share_outlined;
|
static const share = Symbols.share;
|
||||||
static const show = Icons.visibility_outlined;
|
static const show = Symbols.visibility;
|
||||||
static final showFullscreenArrows = MdiIcons.arrowExpand;
|
static const showFullscreenArrows = Symbols.open_in_full;
|
||||||
static const showFullscreenCorners = Icons.fullscreen_outlined;
|
static const showFullscreenCorners = Symbols.fullscreen;
|
||||||
static const slideshow = Icons.slideshow_outlined;
|
static const slideshow = Symbols.slideshow;
|
||||||
static const split = Icons.call_split_outlined;
|
static const split = Symbols.call_split;
|
||||||
static const stats = Icons.donut_small_outlined;
|
static const stats = Symbols.donut_small;
|
||||||
static const vaultLock = Icons.lock_outlined;
|
static const vaultLock = Symbols.lock;
|
||||||
static const vaultAdd = Icons.enhanced_encryption_outlined;
|
static const vaultAdd = Symbols.enhanced_encryption;
|
||||||
static final vaultConfigure = MdiIcons.shieldLockOutline;
|
static final vaultConfigure = MdiIcons.shieldLockOutline;
|
||||||
static const view = Icons.grid_view_outlined;
|
static const view = Symbols.grid_view;
|
||||||
static const viewerLock = Icons.lock_outlined;
|
static const viewerLock = Symbols.lock;
|
||||||
static const viewerUnlock = Icons.lock_open_outlined;
|
static const viewerUnlock = Symbols.lock_open;
|
||||||
static const zoomIn = Icons.add_outlined;
|
static const zoomIn = Symbols.add;
|
||||||
static const zoomOut = Icons.remove_outlined;
|
static const zoomOut = Symbols.remove;
|
||||||
static const collapse = Icons.expand_less_outlined;
|
static const collapse = Symbols.expand_less;
|
||||||
static const expand = Icons.expand_more_outlined;
|
static const expand = Symbols.expand_more;
|
||||||
static const up = Icons.keyboard_arrow_up_outlined;
|
static const up = Symbols.keyboard_arrow_up;
|
||||||
static const down = Icons.keyboard_arrow_down_outlined;
|
static const down = Symbols.keyboard_arrow_down;
|
||||||
static const previous = Icons.chevron_left_outlined;
|
static const previous = Symbols.chevron_left;
|
||||||
static const next = Icons.chevron_right_outlined;
|
static const next = Symbols.chevron_right;
|
||||||
|
|
||||||
// video actions
|
// video actions
|
||||||
// `play` and `pause` icon should be consistent with `AnimatedIcons.play_pause`
|
// `play` and `pause` icon should be consistent with `AnimatedIcons.play_pause`
|
||||||
static const play = Icons.play_arrow;
|
static const play = Symbols.play_arrow;
|
||||||
static const pause = Icons.pause;
|
static const pause = Symbols.pause;
|
||||||
static const previousFrame = Icons.skip_previous_outlined;
|
static const previousFrame = Symbols.skip_previous;
|
||||||
static const nextFrame = Icons.skip_next_outlined;
|
static const nextFrame = Symbols.skip_next;
|
||||||
static const replay10 = Icons.replay_10_outlined;
|
static const replay10 = Symbols.replay_10;
|
||||||
static const skip10 = Icons.forward_10_outlined;
|
static const skip10 = Symbols.forward_10;
|
||||||
static const mute = Icons.volume_off_outlined;
|
static const mute = Symbols.volume_off;
|
||||||
static const unmute = Icons.volume_up_outlined;
|
static const unmute = Symbols.volume_up;
|
||||||
static const captureFrame = Icons.screenshot_outlined;
|
static const captureFrame = Symbols.screenshot;
|
||||||
static const repeat = Icons.repeat_outlined;
|
static const repeat = Symbols.repeat;
|
||||||
static final repeatOff = MdiIcons.repeatOff;
|
static final repeatOff = MdiIcons.repeatOff;
|
||||||
static const selectStreams = Icons.translate_outlined;
|
static const selectStreams = Symbols.translate;
|
||||||
static const setSpeed = Icons.speed_outlined;
|
static const setSpeed = Symbols.speed;
|
||||||
static const videoSettings = Icons.video_settings_outlined;
|
static const videoSettings = Symbols.video_settings;
|
||||||
|
|
||||||
// editor
|
// editor
|
||||||
static const transform = Icons.crop_rotate_outlined;
|
static const transform = Symbols.crop_rotate;
|
||||||
static const aspectRatioFree = Icons.crop_free_outlined;
|
static const aspectRatioFree = Symbols.crop_free;
|
||||||
static const aspectRatioOriginal = Icons.crop_original_outlined;
|
static const aspectRatioOriginal = Symbols.crop_original;
|
||||||
static const aspectRatioSquare = Icons.crop_square_outlined;
|
static const aspectRatioSquare = Symbols.crop_square;
|
||||||
static const aspectRatio_16_9 = Icons.crop_16_9_outlined;
|
static const aspectRatio_16_9 = Symbols.crop_16_9;
|
||||||
static const aspectRatio_4_3 = Icons.crop_landscape_outlined;
|
static const aspectRatio_4_3 = Symbols.crop_landscape;
|
||||||
|
|
||||||
// albums
|
// albums
|
||||||
static const album = Icons.photo_album_outlined;
|
static const album = Symbols.photo_album;
|
||||||
static const dynamicAlbum = Icons.image_search_outlined;
|
static const dynamicAlbum = Symbols.image_search;
|
||||||
static const cameraAlbum = Icons.photo_camera_outlined;
|
static const cameraAlbum = Symbols.photo_camera;
|
||||||
static const downloadAlbum = Icons.file_download;
|
static const downloadAlbum = Symbols.file_download;
|
||||||
static const screenshotAlbum = Icons.screenshot_outlined;
|
static const screenshotAlbum = Symbols.screenshot;
|
||||||
static const recordingAlbum = Icons.smartphone_outlined;
|
static const recordingAlbum = Symbols.smartphone;
|
||||||
static const locked = Icons.lock_outlined;
|
static const locked = Symbols.lock;
|
||||||
static const unlocked = Icons.lock_open_outlined;
|
static const unlocked = Symbols.lock_open;
|
||||||
|
|
||||||
// thumbnail overlay
|
// thumbnail overlay
|
||||||
static const animated = Icons.slideshow;
|
static const animated = Symbols.animated_images;
|
||||||
static const geo = Icons.language_outlined;
|
static const geo = Symbols.language;
|
||||||
static const hdr = Icons.hdr_on_outlined;
|
static const hdr = Symbols.hdr_on;
|
||||||
static const motionPhoto = Icons.motion_photos_on_outlined;
|
static const motionPhoto = Symbols.motion_photos_on;
|
||||||
static const multiPage = Icons.burst_mode_outlined;
|
static const multiPage = Symbols.burst_mode;
|
||||||
static const panorama = Icons.vrpano_outlined;
|
static const panorama = Symbols.vrpano;
|
||||||
static const sphericalVideo = Icons.threesixty_outlined;
|
static const sphericalVideo = Symbols.threesixty;
|
||||||
static const videoThumb = Icons.play_circle_outlined;
|
static const videoThumb = Symbols.play_circle;
|
||||||
static const selected = Icons.check_circle_outlined;
|
static const selected = Symbols.check_circle;
|
||||||
static const unselected = Icons.radio_button_unchecked;
|
static const unselected = Symbols.radio_button_unchecked;
|
||||||
|
|
||||||
// Material Icons references to make constant instances of `IconData`
|
// Material Icons references to make constant instances of `IconData`
|
||||||
// as non-constant instances of `IconData` prevent icon font tree shaking
|
// as non-constant instances of `IconData` prevent icon font tree shaking
|
||||||
|
|
|
@ -60,8 +60,10 @@ class Themes {
|
||||||
dividerColor: colors.outlineVariant,
|
dividerColor: colors.outlineVariant,
|
||||||
scaffoldBackgroundColor: _schemeFirstLayer(colors),
|
scaffoldBackgroundColor: _schemeFirstLayer(colors),
|
||||||
// TYPOGRAPHY & ICONOGRAPHY
|
// TYPOGRAPHY & ICONOGRAPHY
|
||||||
|
iconTheme: _iconTheme(colors),
|
||||||
typography: _typography,
|
typography: _typography,
|
||||||
// COMPONENT THEMES
|
// COMPONENT THEMES
|
||||||
|
bottomNavigationBarTheme: _bottomNavigationBarTheme(colors),
|
||||||
checkboxTheme: _checkboxTheme(colors),
|
checkboxTheme: _checkboxTheme(colors),
|
||||||
drawerTheme: _drawerTheme(colors),
|
drawerTheme: _drawerTheme(colors),
|
||||||
floatingActionButtonTheme: _floatingActionButtonTheme(colors),
|
floatingActionButtonTheme: _floatingActionButtonTheme(colors),
|
||||||
|
@ -79,6 +81,15 @@ class Themes {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BottomNavigationBarThemeData _bottomNavigationBarTheme(ColorScheme colors) {
|
||||||
|
final iconTheme = _iconTheme(colors);
|
||||||
|
return BottomNavigationBarThemeData(
|
||||||
|
elevation: 0,
|
||||||
|
selectedIconTheme: iconTheme.copyWith(color: colors.primary),
|
||||||
|
unselectedIconTheme: iconTheme.copyWith(color: _unselectedWidgetColor(colors)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
static CheckboxThemeData _checkboxTheme(ColorScheme colors) => CheckboxThemeData(
|
static CheckboxThemeData _checkboxTheme(ColorScheme colors) => CheckboxThemeData(
|
||||||
side: BorderSide(width: 2.0, color: _unselectedWidgetColor(colors)),
|
side: BorderSide(width: 2.0, color: _unselectedWidgetColor(colors)),
|
||||||
);
|
);
|
||||||
|
@ -87,6 +98,16 @@ class Themes {
|
||||||
backgroundColor: _schemeSecondLayer(colors),
|
backgroundColor: _schemeSecondLayer(colors),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
static IconThemeData _iconTheme(ColorScheme colors) => IconThemeData(
|
||||||
|
// increased weight (from default 400 to 600)
|
||||||
|
// applied to variable fonts from `material_symbols_icons`,
|
||||||
|
// to match the fixed-weight icons from `material_design_icons_flutter`
|
||||||
|
weight: 600,
|
||||||
|
grade: 0,
|
||||||
|
opticalSize: 48,
|
||||||
|
color: colors.onSurface,
|
||||||
|
);
|
||||||
|
|
||||||
static const _listTileTheme = ListTileThemeData(
|
static const _listTileTheme = ListTileThemeData(
|
||||||
contentPadding: EdgeInsets.symmetric(horizontal: 16),
|
contentPadding: EdgeInsets.symmetric(horizontal: 16),
|
||||||
);
|
);
|
||||||
|
|
|
@ -126,7 +126,7 @@ extension ExtraEntryActionView on EntryAction {
|
||||||
// external
|
// external
|
||||||
EntryAction.edit => AIcons.edit,
|
EntryAction.edit => AIcons.edit,
|
||||||
EntryAction.open => AIcons.openOutside,
|
EntryAction.open => AIcons.openOutside,
|
||||||
EntryAction.openVideoPlayer => AIcons.openVideoPlayer,
|
EntryAction.openVideoPlayer => AIcons.openOutside,
|
||||||
EntryAction.openMap => AIcons.map,
|
EntryAction.openMap => AIcons.map,
|
||||||
EntryAction.setAs => AIcons.setAs,
|
EntryAction.setAs => AIcons.setAs,
|
||||||
EntryAction.cast => AIcons.cast,
|
EntryAction.cast => AIcons.cast,
|
||||||
|
|
|
@ -69,12 +69,13 @@ class _RateQuickChooserState extends State<RateQuickChooser> {
|
||||||
return Row(
|
return Row(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: List.generate(5, (i) {
|
children: List.generate(5, (i) {
|
||||||
final thisRating = i + 1;
|
final disabled = _rating < i + 1;
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.all(4),
|
padding: const EdgeInsets.all(4),
|
||||||
child: Icon(
|
child: Icon(
|
||||||
_rating < thisRating ? AIcons.rating : AIcons.ratingFull,
|
AIcons.rating,
|
||||||
color: _rating < thisRating ? AColors.starDisabled : AColors.starEnabled,
|
fill: disabled ? 0 : 1,
|
||||||
|
color: disabled ? AColors.starDisabled : AColors.starEnabled,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}).toList(),
|
}).toList(),
|
||||||
|
|
|
@ -34,9 +34,8 @@ class _FavouriteTogglerState extends State<FavouriteToggler> {
|
||||||
|
|
||||||
Set<AvesEntry> get entries => widget.entries;
|
Set<AvesEntry> get entries => widget.entries;
|
||||||
|
|
||||||
static const isFavouriteIcon = AIcons.favouriteActive;
|
static const isFavouriteIcon = Icon(AIcons.favourite, fill: 1);
|
||||||
static const isNotFavouriteIcon = AIcons.favourite;
|
static const isNotFavouriteIcon = Icon(AIcons.favourite, fill: 0);
|
||||||
static const favouriteSweeperIcon = AIcons.favourite;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
@ -67,11 +66,11 @@ class _FavouriteTogglerState extends State<FavouriteToggler> {
|
||||||
return isFavourite
|
return isFavourite
|
||||||
? MenuRow(
|
? MenuRow(
|
||||||
text: context.l10n.entryActionRemoveFavourite,
|
text: context.l10n.entryActionRemoveFavourite,
|
||||||
icon: const Icon(isFavouriteIcon),
|
icon: isFavouriteIcon,
|
||||||
)
|
)
|
||||||
: MenuRow(
|
: MenuRow(
|
||||||
text: context.l10n.entryActionAddFavourite,
|
text: context.l10n.entryActionAddFavourite,
|
||||||
icon: const Icon(isNotFavouriteIcon),
|
icon: isNotFavouriteIcon,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
final animate = context.select<Settings, bool>((v) => v.animate);
|
final animate = context.select<Settings, bool>((v) => v.animate);
|
||||||
|
@ -79,7 +78,7 @@ class _FavouriteTogglerState extends State<FavouriteToggler> {
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Icon(isFavourite ? isFavouriteIcon : isNotFavouriteIcon),
|
icon: isFavourite ? isFavouriteIcon : isNotFavouriteIcon,
|
||||||
onPressed: widget.onPressed,
|
onPressed: widget.onPressed,
|
||||||
focusNode: widget.focusNode,
|
focusNode: widget.focusNode,
|
||||||
tooltip: isFavourite ? context.l10n.entryActionRemoveFavourite : context.l10n.entryActionAddFavourite,
|
tooltip: isFavourite ? context.l10n.entryActionRemoveFavourite : context.l10n.entryActionAddFavourite,
|
||||||
|
@ -88,7 +87,8 @@ class _FavouriteTogglerState extends State<FavouriteToggler> {
|
||||||
Sweeper(
|
Sweeper(
|
||||||
key: ValueKey(entries.length == 1 ? entries.first : entries.length),
|
key: ValueKey(entries.length == 1 ? entries.first : entries.length),
|
||||||
builder: (context) => Icon(
|
builder: (context) => Icon(
|
||||||
favouriteSweeperIcon,
|
AIcons.favourite,
|
||||||
|
fill: 0,
|
||||||
color: context.select<AvesColorsData, Color>((v) => v.favourite),
|
color: context.select<AvesColorsData, Color>((v) => v.favourite),
|
||||||
),
|
),
|
||||||
toggledNotifier: _isFavouriteNotifier,
|
toggledNotifier: _isFavouriteNotifier,
|
||||||
|
|
|
@ -140,7 +140,7 @@ class _AvesDonutState extends State<AvesDonut> with AutomaticKeepAliveClientMixi
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
Icon(AIcons.disc, color: colorize(context, d)),
|
Icon(AIcons.circle, fill: 1, color: colorize(context, d)),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
Flexible(
|
Flexible(
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
|
@ -62,6 +62,7 @@ class _EditEntryRatingDialogState extends State<EditEntryRatingDialog> {
|
||||||
children: [
|
children: [
|
||||||
...List.generate(5, (i) {
|
...List.generate(5, (i) {
|
||||||
final thisRating = i + 1;
|
final thisRating = i + 1;
|
||||||
|
final disabled = _rating < thisRating;
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () => setState(() {
|
onTap: () => setState(() {
|
||||||
_action = _RatingAction.set;
|
_action = _RatingAction.set;
|
||||||
|
@ -71,8 +72,9 @@ class _EditEntryRatingDialogState extends State<EditEntryRatingDialog> {
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(4),
|
padding: const EdgeInsets.all(4),
|
||||||
child: Icon(
|
child: Icon(
|
||||||
_rating < thisRating ? AIcons.rating : AIcons.ratingFull,
|
AIcons.rating,
|
||||||
color: _rating < thisRating ? AColors.starDisabled : AColors.starEnabled,
|
fill: disabled ? 0 : 1,
|
||||||
|
color: disabled ? AColors.starDisabled : AColors.starEnabled,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -104,7 +104,7 @@ class _CoverSelectionDialogState extends State<CoverSelectionDialog> {
|
||||||
_buildTab(
|
_buildTab(
|
||||||
context,
|
context,
|
||||||
const Key('tab-color'),
|
const Key('tab-color'),
|
||||||
AIcons.opacity,
|
AIcons.palette,
|
||||||
l10n.coverDialogTabColor,
|
l10n.coverDialogTabColor,
|
||||||
),
|
),
|
||||||
Column(children: _buildColorOptions()),
|
Column(children: _buildColorOptions()),
|
||||||
|
|
|
@ -91,7 +91,6 @@ class _AppBottomNavBarState extends State<AppBottomNavBar> {
|
||||||
.toList(),
|
.toList(),
|
||||||
onTap: (index) => _goTo(context, items, index),
|
onTap: (index) => _goTo(context, items, index),
|
||||||
currentIndex: _getCurrentIndex(context, items),
|
currentIndex: _getCurrentIndex(context, items),
|
||||||
elevation: 0,
|
|
||||||
type: BottomNavigationBarType.fixed,
|
type: BottomNavigationBarType.fixed,
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
showSelectedLabels: false,
|
showSelectedLabels: false,
|
||||||
|
|
|
@ -56,6 +56,9 @@ class EntryInfoActionDelegate with FeedbackMixin, PermissionAwareMixin, EntryEdi
|
||||||
return canWrite && targetEntry.isMotionPhoto;
|
return canWrite && targetEntry.isMotionPhoto;
|
||||||
case EntryAction.viewMotionPhotoVideo:
|
case EntryAction.viewMotionPhotoVideo:
|
||||||
return appMode.canNavigate && targetEntry.isMotionPhoto;
|
return appMode.canNavigate && targetEntry.isMotionPhoto;
|
||||||
|
// debug
|
||||||
|
case EntryAction.debug:
|
||||||
|
return !kReleaseMode;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ class InfoAppBar extends StatelessWidget {
|
||||||
const PopupMenuDivider(),
|
const PopupMenuDivider(),
|
||||||
...formatSpecificActions.map((action) => _toMenuItem(context, action, enabled: actionDelegate.canApply(entry, action))),
|
...formatSpecificActions.map((action) => _toMenuItem(context, action, enabled: actionDelegate.canApply(entry, action))),
|
||||||
],
|
],
|
||||||
if (!kReleaseMode) ...[
|
if (isVisible(EntryAction.debug)) ...[
|
||||||
const PopupMenuDivider(),
|
const PopupMenuDivider(),
|
||||||
_toMenuItem(context, EntryAction.debug, enabled: true),
|
_toMenuItem(context, EntryAction.debug, enabled: true),
|
||||||
]
|
]
|
||||||
|
|
|
@ -69,7 +69,7 @@ class _TvMetadataPageState extends State<TvMetadataPage> {
|
||||||
final dir = metadata[titles[i]]!;
|
final dir = metadata[titles[i]]!;
|
||||||
final color = MetadataDirTile.getTitleColor(context, dir);
|
final color = MetadataDirTile.getTitleColor(context, dir);
|
||||||
return NavigationRailDestination(
|
return NavigationRailDestination(
|
||||||
icon: Icon(AIcons.disc, color: color),
|
icon: Icon(AIcons.circle, fill: 1, color: color),
|
||||||
label: Text(title),
|
label: Text(title),
|
||||||
);
|
);
|
||||||
}).toList(),
|
}).toList(),
|
||||||
|
|
|
@ -250,7 +250,11 @@ class _ViewerButtonRowContentState extends State<ViewerButtonRowContent> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final appMode = context.watch<ValueNotifier<AppMode>>().value;
|
final appMode = context.watch<ValueNotifier<AppMode>>().value;
|
||||||
final showOrientationActions = EntryActions.orientationActions.any((v) => actionDelegate.isVisible(appMode: appMode, action: v));
|
bool isVisible(EntryAction action) => actionDelegate.isVisible(
|
||||||
|
appMode: appMode,
|
||||||
|
action: action,
|
||||||
|
);
|
||||||
|
final showOrientationActions = EntryActions.orientationActions.any(isVisible);
|
||||||
final topLevelActions = widget.topLevelActions;
|
final topLevelActions = widget.topLevelActions;
|
||||||
final exportActions = widget.exportActions;
|
final exportActions = widget.exportActions;
|
||||||
final videoActions = widget.videoActions;
|
final videoActions = widget.videoActions;
|
||||||
|
@ -304,7 +308,7 @@ class _ViewerButtonRowContentState extends State<ViewerButtonRowContent> {
|
||||||
...videoActions.map((action) => _buildPopupMenuItem(context, action, videoController)),
|
...videoActions.map((action) => _buildPopupMenuItem(context, action, videoController)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
if (!kReleaseMode) ...[
|
if (isVisible(EntryAction.debug)) ...[
|
||||||
const PopupMenuDivider(),
|
const PopupMenuDivider(),
|
||||||
_buildPopupMenuItem(context, EntryAction.debug, videoController),
|
_buildPopupMenuItem(context, EntryAction.debug, videoController),
|
||||||
]
|
]
|
||||||
|
|
16
pubspec.lock
16
pubspec.lock
|
@ -73,6 +73,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.2"
|
||||||
|
chalkdart:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: chalkdart
|
||||||
|
sha256: "82dfa884e3cf97641eb0742a3b9ffd41490666b9ece548b2e32cbfefe540bf86"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.4.0"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -787,6 +795,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.7296"
|
version: "7.0.7296"
|
||||||
|
material_symbols_icons:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: material_symbols_icons
|
||||||
|
sha256: "99d5b0e7c65232dfe1247e0ac67eeeee2cab9da2d860748fc495d34f5e9e6397"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.2811.0"
|
||||||
media_kit:
|
media_kit:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -97,6 +97,7 @@ dependencies:
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
local_auth:
|
local_auth:
|
||||||
material_design_icons_flutter:
|
material_design_icons_flutter:
|
||||||
|
material_symbols_icons:
|
||||||
network_info_plus:
|
network_info_plus:
|
||||||
overlay_support:
|
overlay_support:
|
||||||
package_info_plus:
|
package_info_plus:
|
||||||
|
|
Loading…
Reference in a new issue