107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:easy_localization/easy_localization.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:flutter_hooks/flutter_hooks.dart';
 | |
| import 'package:hooks_riverpod/hooks_riverpod.dart';
 | |
| import 'package:island/models/dev_project.dart';
 | |
| import 'package:island/screens/developers/apps.dart';
 | |
| import 'package:island/screens/developers/bots.dart';
 | |
| import 'package:island/services/responsive.dart';
 | |
| 
 | |
| class ProjectDetailView extends HookConsumerWidget {
 | |
|   final String publisherName;
 | |
|   final DevProject project;
 | |
|   final VoidCallback onBackToHub;
 | |
| 
 | |
|   const ProjectDetailView({
 | |
|     super.key,
 | |
|     required this.publisherName,
 | |
|     required this.project,
 | |
|     required this.onBackToHub,
 | |
|   });
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context, WidgetRef ref) {
 | |
|     final tabController = useTabController(initialLength: 2);
 | |
| 
 | |
|     final isWide = isWideScreen(context);
 | |
| 
 | |
|     if (isWide) {
 | |
|       return Row(
 | |
|         spacing: 8,
 | |
|         children: [
 | |
|           Card(
 | |
|             margin: const EdgeInsets.only(left: 16, bottom: 16, top: 12),
 | |
|             child: Transform.translate(
 | |
|               offset: const Offset(0, -56),
 | |
|               child: NavigationRail(
 | |
|                 extended: isWiderScreen(context),
 | |
|                 scrollable: true,
 | |
|                 labelType:
 | |
|                     isWiderScreen(context)
 | |
|                         ? null
 | |
|                         : NavigationRailLabelType.selected,
 | |
|                 backgroundColor: Colors.transparent,
 | |
|                 selectedIndex: tabController.index,
 | |
|                 onDestinationSelected:
 | |
|                     (index) => tabController.animateTo(index),
 | |
|                 destinations: [
 | |
|                   NavigationRailDestination(
 | |
|                     icon: Icon(Icons.apps),
 | |
|                     label: Text('customApps'.tr()),
 | |
|                   ),
 | |
|                   NavigationRailDestination(
 | |
|                     icon: Icon(Icons.smart_toy),
 | |
|                     label: Text('bots'.tr()),
 | |
|                   ),
 | |
|                 ],
 | |
|               ),
 | |
|             ),
 | |
|           ),
 | |
|           Expanded(
 | |
|             child: TabBarView(
 | |
|               controller: tabController,
 | |
|               children: [
 | |
|                 CustomAppsScreen(
 | |
|                   publisherName: publisherName,
 | |
|                   projectId: project.id,
 | |
|                 ),
 | |
|                 BotsScreen(publisherName: publisherName, projectId: project.id),
 | |
|               ],
 | |
|             ),
 | |
|           ),
 | |
|         ],
 | |
|       );
 | |
|     } else {
 | |
|       return Column(
 | |
|         children: [
 | |
|           Container(
 | |
|             color: Theme.of(context).colorScheme.surface,
 | |
|             child: TabBar(
 | |
|               dividerColor: Colors.transparent,
 | |
|               controller: tabController,
 | |
|               tabs: [
 | |
|                 Tab(
 | |
|                   child: Text('customApps'.tr(), textAlign: TextAlign.center),
 | |
|                 ),
 | |
|                 Tab(child: Text('bots'.tr(), textAlign: TextAlign.center)),
 | |
|               ],
 | |
|             ),
 | |
|           ),
 | |
|           Expanded(
 | |
|             child: TabBarView(
 | |
|               controller: tabController,
 | |
|               children: [
 | |
|                 CustomAppsScreen(
 | |
|                   publisherName: publisherName,
 | |
|                   projectId: project.id,
 | |
|                 ),
 | |
|                 BotsScreen(publisherName: publisherName, projectId: project.id),
 | |
|               ],
 | |
|             ),
 | |
|           ),
 | |
|         ],
 | |
|       );
 | |
|     }
 | |
|   }
 | |
| }
 |