import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:inventree/api.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:inventree/inventree/part.dart'; import 'package:inventree/widget/fields.dart'; import 'package:inventree/widget/refreshable_state.dart'; import 'package:inventree/widget/snacks.dart'; import '../l10.dart'; class PartImageWidget extends StatefulWidget { PartImageWidget(this.part, {Key? key}) : super(key: key); final InvenTreePart part; @override _PartImageState createState() => _PartImageState(part); } class _PartImageState extends RefreshableState { _PartImageState(this.part); final InvenTreePart part; @override Future request() async { await part.reload(); } @override String getAppBarTitle(BuildContext context) => part.fullname; @override List getAppBarActions(BuildContext context) { List actions = []; if (InvenTreeAPI().checkPermission('part', 'change')) { // File upload actions.add( IconButton( icon: FaIcon(FontAwesomeIcons.fileUpload), onPressed: () async { FilePickerDialog.pickFile( onPicked: (File file) async { final result = await part.uploadImage(file); if (!result) { showSnackIcon(L10().uploadFailed, success: false); } refresh(); } ); }, ) ); } return actions; } @override Widget getBody(BuildContext context) { return InvenTreeAPI().getImage(part.image); } }