manager-app/lib/Components/resource_tab.dart
2024-01-16 16:05:43 +01:00

204 lines
5.6 KiB
Dart

import 'dart:io';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:manager_app/Components/upload_image_container.dart';
import 'package:manager_app/Components/upload_online_resources_container.dart';
import 'package:manager_app/constants.dart';
import 'package:manager_api_new/api.dart';
class ResourceTab extends StatefulWidget {
final ResourceDTO resourceDTO;
final Function onFileUpload;
final Function onFileUploadWeb;
const ResourceTab({
Key? key,
required this.resourceDTO,
required this.onFileUpload,
required this.onFileUploadWeb,
}) : super(key: key);
@override
_ResourceTabState createState() => _ResourceTabState();
}
class _ResourceTabState extends State<ResourceTab> with SingleTickerProviderStateMixin {
TabController? _tabController;
List<Tab> tabsToShow = <Tab>[];
@override
void initState() {
tabsToShow.add(new Tab(text: "Local"));
tabsToShow.add(new Tab(text: "En ligne"));
_tabController = new TabController(length: 2, vsync: this);
//_tabController!.addListener(_handleTabSelection);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TabBar(
unselectedLabelColor: Colors.black,
labelColor: kPrimaryColor,
tabs: tabsToShow,
controller: _tabController,
indicatorSize: TabBarIndicatorSize.tab,
indicatorColor: kPrimaryColor,
),
Expanded(
child: TabBarView(
children: getContent(widget.resourceDTO, widget.onFileUpload, widget.onFileUploadWeb),
controller: _tabController,
),
),
],
),
),
);
}
/*void _handleTabSelection() {
switch(_tabController!.index) {
case 0:
setState(() {
widget.resourceDTO.url = null;
widget.resourceDTO.type = ResourceType.Image;
});
break;
case 1:
setState(() {
widget.resourceDTO.url = null;
widget.resourceDTO.type = ResourceType.ImageUrl;
});
break;
case 2:
setState(() {
widget.resourceDTO.url = null;
widget.resourceDTO.type = ResourceType.Audio;
});
break;
}
}*/
}
getContent(ResourceDTO resourceDTO, Function onFileUpload, Function onFileUploadWeb) {
List<Widget> tabsToShow = <Widget>[];
// Local Image
tabsToShow.add(
new Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: UploadContentContainer(
onChanged: (List<File>? files) {
onFileUpload(files);
resourceDTO.type = ResourceType.Image;
},
onChangedWeb: (List<PlatformFile>? files) {
onFileUploadWeb(files);
resourceDTO.type = ResourceType.Image;
},
),
)
);
// Online Image
tabsToShow.add(
new Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: UploadOnlineResourceContainer(
resourceDTO: resourceDTO,
onChanged: (ResourceDTO value) {
resourceDTO = value;
},
),
)
);
// Audio
/*tabsToShow.add(
new Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: UploadAudioContainer(
onChanged: (List<File> files) {
onFileUpload(files);
resourceDTO.type = ResourceType.Audio;
},
onChangedWeb: (List<PlatformFile> files) {
onFileUploadWeb(files);
resourceDTO.type = ResourceType.Audio;
},
),
)
);
// Video
tabsToShow.add(
new Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: UploadContentContainer(
onChanged: (List<File>? files) {
onFileUpload(files);
resourceDTO.type = ResourceType.Video;
},
onChangedWeb: (List<PlatformFile>? files) {
onFileUploadWeb(files);
resourceDTO.type = ResourceType.Video;
},
),
)
);
// Online Video
tabsToShow.add(
new Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: UploadOnlineResourceContainer(
resourceDTO: resourceDTO,
onChanged: (ResourceDTO value) {
resourceDTO = value;
},
),
)
);
// PDF
tabsToShow.add(
new Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: UploadContentContainer(
onChanged: (List<File>? files) {
onFileUpload(files);
resourceDTO.type = ResourceType.Pdf;
},
onChangedWeb: (List<PlatformFile>? files) {
onFileUploadWeb(files);
resourceDTO.type = ResourceType.Pdf;
},
),
)
);
// JSON
tabsToShow.add(
new Padding(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
child: UploadContentContainer(
onChanged: (List<File>? files) {
onFileUpload(files);
resourceDTO.type = ResourceType.Json;
},
onChangedWeb: (List<PlatformFile>? files) {
onFileUploadWeb(files);
resourceDTO.type = ResourceType.Json;
},
),
)
);*/
return tabsToShow;
}