aves_mio/lib/widgets/explorer/crumb_line.dart
Fabio Micheluz 2c988f959b
Some checks are pending
Quality check / Flutter analysis (push) Waiting to run
Quality check / CodeQL analysis (java-kotlin) (push) Waiting to run
first commit
2026-02-19 13:25:23 +01:00

46 lines
1.3 KiB
Dart

import 'package:aves/services/common/services.dart';
import 'package:aves/utils/android_file_utils.dart';
import 'package:aves/view/view.dart';
import 'package:aves/widgets/common/app_bar/crumb_line.dart';
import 'package:aves_model/aves_model.dart';
import 'package:flutter/material.dart';
class ExplorerCrumbLine extends StatelessWidget {
final VolumeRelativeDirectory? directory;
final void Function(VolumeRelativeDirectory? combinedPath) onTap;
const ExplorerCrumbLine({
super.key,
required this.directory,
required this.onTap,
});
@override
Widget build(BuildContext context) {
return CrumbLine<VolumeRelativeDirectory?>(
split: _split,
combine: _combine,
onTap: onTap,
);
}
List<String> _split(BuildContext context) {
final _directory = directory;
if (_directory == null) return [];
return [
_directory.getVolumeDescription(context),
...pContext.split(_directory.relativeDir),
];
}
VolumeRelativeDirectory? _combine(BuildContext context, int index) {
final _directory = directory;
if (_directory == null) return null;
final path = pContext.joinAll([
_directory.volumePath,
..._split(context).skip(1).take(index),
]);
return androidFileUtils.relativeDirectoryFromPath(path);
}
}