From 86f8dc23b203612d586295a60e4e27a9e06b4bea Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Sat, 2 Nov 2024 08:25:10 +0530 Subject: [PATCH] [client] path view --- client/lib/ui/app/app_layout.dart | 3 +- client/lib/ui/explorer/path_view.dart | 43 +++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 client/lib/ui/explorer/path_view.dart diff --git a/client/lib/ui/app/app_layout.dart b/client/lib/ui/app/app_layout.dart index e87b260b..1b61c3b4 100644 --- a/client/lib/ui/app/app_layout.dart +++ b/client/lib/ui/app/app_layout.dart @@ -4,6 +4,7 @@ import 'package:phylum/ui/app/app_actions.dart'; import 'package:phylum/ui/app/nav_list.dart'; import 'package:phylum/ui/common/expandable_fab.dart'; import 'package:phylum/ui/explorer/explorer_view.dart'; +import 'package:phylum/ui/explorer/path_view.dart'; class AppLayout extends StatelessWidget { final String folderId; @@ -71,7 +72,7 @@ class AppLayout extends StatelessWidget { mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ - // FolderHeriarchyView(), + PathView.create(folderId), Expanded(child: ExplorerView.create(folderId)), ], ); diff --git a/client/lib/ui/explorer/path_view.dart b/client/lib/ui/explorer/path_view.dart new file mode 100644 index 00000000..b807a691 --- /dev/null +++ b/client/lib/ui/explorer/path_view.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:phylum/libphylum/phylum_account.dart'; +import 'package:provider/provider.dart'; + +class PathView extends StatelessWidget { + final String id; + + PathView._({required this.id}) : super(key: ValueKey(id)); + + static Widget create(String id) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 12), + child: PathView._(id: id), + ); + } + + @override + Widget build(BuildContext context) { + final account = context.read(); + return StreamBuilder( + stream: account.db.managers.resources.filter((r) => r.id.equals(id)).watchSingleOrNull(), + builder: (context, snapshot) { + final r = snapshot.data; + if (r == null) { + return const SizedBox(); + } + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (r.parent != null) PathView._(id: r.parent!), + ElevatedButton( + child: Text(r.parent == null ? "/" : r.name), + onPressed: () { + context.pushNamed('folder', pathParameters: {'id': r.id}); + }, + ), + ], + ); + }, + ); + } +}