205 lines
5.6 KiB
Dart
205 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_audio_container.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;
|
|
} |