printDirectoryTree method
Prints the directory tree starting from the specified directory.
Builds a tree representation of the directory structure and prints it to the console, followed by summary information.
directory The directory to start from.
prefix Prefix string to use for indentation (default: empty string).
Implementation
Future<void> printDirectoryTree(
  Directory directory, {
  String prefix = '',
}) async {
  try {
    final rootNode = await _buildFileTree(directory, currentLevel: 0);
    _sortNodes(rootNode.children);
    final totalFiles = _countFiles(rootNode);
    final totalDirs = _countDirs(rootNode);
    final totalSize = rootNode.size;
    _printTree(rootNode, prefix: '');
    print('\n${ConsoleColors.bold}Summary:${ConsoleColors.reset}');
    print(
      '${ConsoleColors.info('Total files:')} ${ConsoleColors.success(totalFiles.toString())}',
    );
    print(
      '${ConsoleColors.info('Total directories:')} ${ConsoleColors.success(totalDirs.toString())}',
    );
    if (showSizes) {
      print(
        '${ConsoleColors.info('Total size:')} ${ConsoleColors.success(_formatSize(totalSize))}',
      );
    }
  } catch (e) {
    if (!suppressErrors) {
      print(ConsoleColors.error('Error processing directory tree: $e'));
    }
  }
}