WIP: remove file picker

pull/183/head
Xin Yao 4 years ago
parent ca9a13b150
commit a637cfb62f
  1. 14
      example/lib/pages/home_page.dart
  2. 1
      example/pubspec.yaml
  3. 3
      lib/widgets/editor.dart
  4. 25
      lib/widgets/toolbar.dart
  5. 1
      pubspec.yaml

@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@ -216,6 +217,19 @@ class _HomePageState extends State<HomePage> {
);
}
Future<String?> _pickImageWeb(OnImagePickCallback onImagePickCallback) async {
final result = await FilePicker.platform.pickFiles();
if (result == null) {
return null;
}
// Take first, because we don't allow picking multiple files.
final fileName = result.files.first.name!;
final file = File(fileName);
return onImagePickCallback(file);
}
void _readOnly() {
Navigator.push(
super.context,

@ -24,6 +24,7 @@ dependencies:
flutter:
sdk: flutter
universal_html: ^2.0.7
file_picker: ^3.0.0
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.

@ -96,7 +96,8 @@ String _standardizeImageUrl(String url) {
}
Widget _defaultEmbedBuilder(BuildContext context, leaf.Embed node) {
assert(!kIsWeb, 'Please provide EmbedBuilder for Web');
assert(!kIsWeb, 'Please provide EmbedBuilder for Web '
'(check out example directory for how to do it)');
switch (node.value.type) {
case 'image':
final imageUrl = _standardizeImageUrl(node.value.data);

@ -1,6 +1,5 @@
import 'dart:io';
import 'package:file_picker/file_picker.dart';
import 'package:filesystem_picker/filesystem_picker.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
@ -15,7 +14,7 @@ import '../utils/color.dart';
import 'controller.dart';
typedef OnImagePickCallback = Future<String> Function(File file);
typedef ImagePickImpl = Future<String?> Function(ImageSource source);
typedef ImagePickImpl = Future<String?> Function(ImageSource source, OnImagePickCallback onImagePickCallback);
class InsertEmbedButton extends StatelessWidget {
const InsertEmbedButton({
@ -547,11 +546,12 @@ class _ImageButtonState extends State<ImageButton> {
String? imageUrl;
if (widget.imagePickImpl != null) {
imageUrl = await widget.imagePickImpl!(widget.imageSource);
imageUrl = await widget.imagePickImpl!(widget.imageSource, widget.onImagePickCallback!);
} else {
if (kIsWeb) {
imageUrl = await _pickImageWeb();
} else if (Platform.isAndroid || Platform.isIOS) {
assert(!kIsWeb, 'Please provide imagePickImpl for Web '
'(check out example directory for how to do it)');
if (Platform.isAndroid || Platform.isIOS) {
imageUrl = await _pickImage(widget.imageSource);
} else {
imageUrl = await _pickImageDesktop();
@ -564,19 +564,6 @@ class _ImageButtonState extends State<ImageButton> {
}
}
Future<String?> _pickImageWeb() async {
final result = await FilePicker.platform.pickFiles();
if (result == null) {
return null;
}
// Take first, because we don't allow picking multiple files.
final fileName = result.files.first.name!;
final file = File(fileName);
return widget.onImagePickCallback!(file);
}
Future<String?> _pickImage(ImageSource source) async {
final pickedFile = await ImagePicker().getImage(source: source);
if (pickedFile == null) {

@ -13,7 +13,6 @@ dependencies:
flutter:
sdk: flutter
collection: ^1.15.0
file_picker: ^3.0.0
filesystem_picker: ^2.0.0-nullsafety.0
flutter_colorpicker: ^0.4.0
flutter_keyboard_visibility: ^5.0.0

Loading…
Cancel
Save