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:convert';
import 'dart:io'; import 'dart:io';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.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() { void _readOnly() {
Navigator.push( Navigator.push(
super.context, super.context,

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

@ -96,7 +96,8 @@ String _standardizeImageUrl(String url) {
} }
Widget _defaultEmbedBuilder(BuildContext context, leaf.Embed node) { 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) { switch (node.value.type) {
case 'image': case 'image':
final imageUrl = _standardizeImageUrl(node.value.data); final imageUrl = _standardizeImageUrl(node.value.data);

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

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

Loading…
Cancel
Save