स्पंदन 'भविष्य <शून्य>' प्रकार 'विजेट' का एक उपप्रकार नहीं है [डुप्लिकेट]

Nov 29 2020

मुझे MultiImagePicker के साथ छवि का चयन करना है, इसलिए मेरे पास यह फ़ंक्शन है जो चयनित संपत्ति की प्रतीक्षा करता है, लेकिन जब मैं एक बटन पर क्लिक करता हूं तो यह फ़ंक्शन कहा जाता है। बिना किसी बटन को क्लिक किए जब मैं पेज के अंदर प्रवेश करता हूं, तो मुझे फोटो का चयन करना है

List<Asset> images = List<Asset>();
Future<void> loadAssets() async {
List<Asset> resultList = List<Asset>();
String error = '';
try {
  resultList = await MultiImagePicker.pickImages(
    maxImages: 300,
    enableCamera: false,
    selectedAssets: images,
  );
} on Exception catch (e) {
  error = e.toString();
}
if (!mounted) return;

setState(() {
  images = resultList;
});
}

@override
Widget build(BuildContext context) {
if(images.length == 0){
return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
              centerTitle: true,
              title: Text('Picker Example'),
              backgroundColor: Colors.blueAccent
          ),
          body:Container(
            child: images.length > 0 ? Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                RaisedButton(
                  child: Text("Select photo"),
                  onPressed: () => loadAssets(),
                ),
                RaisedButton(
                  child: Text("Remove photo"),
                  onPressed: removeAssets,
                ),
                RaisedButton(
                  child: Text("upload photo"),
                  onPressed: upload,
                ),
                Expanded(
                  child: buildGridView(),
                )
              ],
            ) :loadAssets();
       )
);

क्या यह संभव है ?

जवाब

1 ShriHari Nov 29 2020 at 20:18

फ़ंक्शन loadAssets()में कॉल करें initState()। चयन करने के बाद, छवियों को imagesसूची में संग्रहीत किया जाता है । फिर वही करें जो आप चाहते हैं।

डॉक्स से लिया गया उदाहरण ,

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:multi_image_picker/multi_image_picker.dart';

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

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

class _MyAppState extends State<MyApp> {
  List<Asset> images = List<Asset>();
  String _error = 'No Error Dectected';

  @override
  void initState() {
    super.initState();
    loadAssets();
  }

  Widget buildGridView() {
    return GridView.count(
      crossAxisCount: 3,
      children: List.generate(images.length, (index) {
        Asset asset = images[index];
        return AssetThumb(
          asset: asset,
          width: 300,
          height: 300,
        );
      }),
    );
  }

  Future<void> loadAssets() async {
    List<Asset> resultList = List<Asset>();
    String error = 'No Error Dectected';

    try {
      resultList = await MultiImagePicker.pickImages(
        maxImages: 300,
        enableCamera: true,
        selectedAssets: images,
        cupertinoOptions: CupertinoOptions(takePhotoIcon: "chat"),
        materialOptions: MaterialOptions(
          actionBarColor: "#abcdef",
          actionBarTitle: "Example App",
          allViewTitle: "All Photos",
          useDetailsView: false,
          selectCircleStrokeColor: "#000000",
        ),
      );
    } on Exception catch (e) {
      error = e.toString();
    }

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      images = resultList;
      _error = error;
    });
  }

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Column(
          children: <Widget>[
            Center(child: Text('Error: $_error')),
            Expanded(
              child: images.length > 0 ? buildGridView() : Center(child: Text("No Images")),
            )
          ],
        ),
      ),
    );
  }
}