Untitled
unknown
dart
2 years ago
3.5 kB
15
Indexable
import 'dart:developer';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:super_student_v2/models/document_model.dart';
import 'package:file_picker/file_picker.dart';
import 'package:super_student_v2/shared/shared_value.dart';
import 'package:http/http.dart' as http;
class StudentDocumentItem extends StatefulWidget {
const StudentDocumentItem(
{super.key, required this.documentModel, required this.codeStudent});
final DocumentModel documentModel;
final String codeStudent;
@override
State<StudentDocumentItem> createState() => _StudentDocumentItemState();
}
class _StudentDocumentItemState extends State<StudentDocumentItem> {
PlatformFile? file;
void _uploadFile(context) async {
FilePickerResult? result = await FilePicker.platform.pickFiles(
type: FileType.custom,
allowedExtensions: [
'pdf',
'doc',
'docx',
'png',
'jpg',
'jpeg',
'xlsx',
],
);
if (result == null) return;
setState(() {
file = result.files.single;
});
if (file!.size > 2097152) {
ScaffoldMessenger.of(context).clearSnackBars();
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('file size must be under 2 Mb'),
),
);
}
Map<String, String> headers = {"Authorization": await getToken()};
try {
var request =
http.MultipartRequest('POST', Uri.parse('$baseUrl/student/document-upload'));
request.headers.addAll(headers);
request.files.add(await http.MultipartFile.fromPath('files', file!.path!));
request.fields['code_document'] = widget.documentModel.codeDocument!;
request.fields['code_student'] = widget.codeStudent;
var response = await request.send();
response.stream.transform(utf8.decoder).listen((value){
var jsonResponse = jsonDecode(value) as Map<String, dynamic>;
log(jsonResponse.toString(), name: 'log response');
});
} catch (e) {
log(e.toString(),name: 'error');
rethrow;
}
}
@override
Widget build(BuildContext context) {
return Card(
child: Container(
padding: const EdgeInsets.all(10),
child: Row(
children: [
Expanded(
child: Text(
widget.documentModel.namaDocument!,
style: Theme.of(context)
.textTheme
.labelLarge!
.copyWith(fontSize: 18),
),
),
GestureDetector(
onTap: () {},
child: CircleAvatar(
child: Icon(
Icons.remove_red_eye_outlined,
color: Theme.of(context).colorScheme.onPrimary,
),
),
),
const SizedBox(
width: 5,
),
GestureDetector(
onTap: () async {
_uploadFile(context);
// context.read<DocumentBloc>().add(UploadDocument(file!,
// widget.documentModel.codeDocument!, widget.codeStudent));
},
child: CircleAvatar(
backgroundColor: Theme.of(context).colorScheme.primary,
child: Icon(
Icons.add,
color: Theme.of(context).colorScheme.onPrimary,
),
),
),
],
),
),
);
}
}
Editor is loading...