flutter_image_add_drag_sort 0.0.3 copy "flutter_image_add_drag_sort: ^0.0.3" to clipboard
flutter_image_add_drag_sort: ^0.0.3 copied to clipboard

Flutter Image add drag sort, Image add drag sort, support click event, delete, add, long press drag sort.

example/lib/main.dart

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_image_add_drag_sort/flutter_image_add_drag_sort.dart';
import 'package:image_picker/image_picker.dart';

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
        theme: ThemeData(
          primarySwatch: Colors.green,
        ),
        home: new MyHomePage());
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey<ScaffoldState> _key = GlobalKey();
  List<ImageDataItem> imageList = [];

  @override
  Widget build(BuildContext context) {
    var imgSize = (MediaQuery.of(context).size.width - 32) / 4.0 - 2.0;
    return Scaffold(
      appBar: AppBar(
        title: Text('Image add'),
        automaticallyImplyLeading: false,
        elevation: 0.0,
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          crossAxisAlignment: CrossAxisAlignment.start,
          mainAxisAlignment: MainAxisAlignment.start,
          children: [
            Text("最多可以添加9张图片, 添加图像后,长按可拖动排序。", style: TextStyle(fontSize: 13, color: const Color(0xffb0b0b0)), textAlign: TextAlign.start),
            SizedBox(height: 8.0),
            Builder(
              builder: (context) {
                return ImageAddDragContainer(
                  key: _key,
                  data: imageList,
                  maxCount: 9,
                  readOnly: false,
                  draggableMode: false,
                  itemSize: Size(imgSize, imgSize),
                  addWidget: Icon(Icons.add, size: 24, color: Colors.black38),
                  onAddImage: (uploading, onBegin) async {
                    return await doAddImage(uploading, onBegin);
                  },
                  onChanged: (items) async {
                    imageList = items;
                  },
                  onTapItem: (item, index) {
                    Scaffold.of(context).showSnackBar(SnackBar(content: Text("click item: $index, ${item.key}")));
                  },
                  builderItem: (context, key, url, type) {
                    return Container(
                      color: Colors.yellow,
                      child: url == null || url.isEmpty ? null : Image.file(File(url)),
                    );
                  },
                );
              },
            )
          ],
        ),
      ),
    );
  }

  doAddImage(List<ImageDataItem> uploading, onBegin) async {
    File image = await ImagePicker.pickImage(
      source: ImageSource.gallery,
      maxWidth: 2048,
      maxHeight: 2048,
      imageQuality: 85,
    );
    if (image == null)
      return null;
    if (onBegin != null) await onBegin();
    await sleep(1000);  // 加个延时, 模拟网络处理
    return ImageDataItem(image.absolute.path, key: DateTime.now().millisecondsSinceEpoch.toString());
  }

  static sleep(int milliseconds) async {
    await Future.delayed(Duration(milliseconds: milliseconds));
  }

}
8
likes
40
pub points
24%
popularity

Publisher

unverified uploader

Flutter Image add drag sort, Image add drag sort, support click event, delete, add, long press drag sort.

Repository (GitHub)
View/report issues

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on flutter_image_add_drag_sort