繁体   English   中英

从图库中挑选图像时丢失与设备的连接错误

[英]lost connection to device error while image picking from gallery

我正在制作应用程序,其中我从图库中挑选图像,但是当我 select 图像应用程序崩溃时,我收到以下错误.. I/Process (31766): Sending signal。 PID:31766 SIG:9 失去与设备的连接。 退出(sigterm)

这是我从图库中选择图像的图像选择器代码,mainfest 文件是 decribr brlow

import 'dart:io';

import 'package:flutter/material.dart';

class Crop extends StatefulWidget {
final Color color;
final File image;

  const Crop({Key key, this.color,this.image}) : super(key: key);

  @override
  _CropState createState() => _CropState(color,image);
}

class _CropState extends State<Crop> {
 Color color;
 File image;

  _CropState(this.color,this.image);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
         leading: IconButton(icon: Icon(Icons.done), onPressed: (){}),
         actions: [IconButton(icon: Icon(Icons.clear), onPressed: (){})],
        title: Center(
          child: Padding(
            padding: const EdgeInsets.only(right:10.0),
            
            child: Text('CROP PHOTO',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20,
                  fontWeight: FontWeight.bold,

                  shadows: [
                    Shadow(
                      blurRadius: 10.0,
                      color: Colors.blue,
                      offset: Offset(5.0, 5.0),
                    ),
                       
                  ],
                )),
          ),
        ),
  
        backgroundColor: Colors.cyan,
      ),
      
      bottomNavigationBar: BottomNavigationBar(
  type: BottomNavigationBarType.fixed,
  backgroundColor: Colors.cyan,
  selectedItemColor: Colors.white,
  unselectedItemColor: Colors.white.withOpacity(.60),
  selectedFontSize: 14,
  unselectedFontSize: 14,
  onTap: (value) { 
  },
  items: [
    BottomNavigationBarItem(
      title: Text('Crop',style: TextStyle(color: Colors.white),),
      icon: Icon(Icons.crop),
    ),
    BottomNavigationBarItem(
      title: Text('Edit Text'),
      icon: Icon(Icons.text_fields),
    ),
  ],
),
      body: Container(
        height: MediaQuery.of(context).size.height,
        width: MediaQuery.of(context).size.width,
        decoration: BoxDecoration(
          gradient: LinearGradient(
              begin: Alignment.topRight,
              end: Alignment.bottomLeft,
              colors: [Colors.cyan[300], Colors.purple]),
        ),
child: Column(
  mainAxisAlignment: MainAxisAlignment.center,
  children: [
    Container(
      height: MediaQuery.of(context).size.height/2,
      width: MediaQuery.of(context).size.width,
      color:color,
      child: Image.file(image,height:40,width:100),
    ),
  ],
),
     ),
    );
  }
}

这是我最强大的文件代码


    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bravemindstudio.invitation_card_maker">
    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->


<uses-permission android:name="android:permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android:permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FILE_LOCATION" />



    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="invitation_card_maker"
        android:requestLegacyExternalStorage="true"
        android:icon="@mipmap/ic_launcher">
        
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
            <!-- Displays an Android View that continues showing the launch screen
                 Drawable until Flutter paints its first frame, then this splash
                 screen fades out. A splash screen is useful to avoid any visual
                 gap between the end of Android's launch screen and the painting of
                 Flutter's first frame. -->
            <meta-data
              android:name="io.flutter.embedding.android.SplashScreenDrawable"
              android:resource="@drawable/launch_background"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

         <activity
    android:name="com.yalantis.ucrop.UCropActivity"
    android:screenOrientation="portrait"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

有可用的图像选择器和图像裁剪器库,使这些任务变得容易图像选择器

图像裁剪器

您可以调用此 function 从图库中选择图像

  Future _scanBytesFromGallery() async {
PickedFile pickedFilefile = await ImagePicker().getImage(
    source: ImageSource.gallery,
    imageQuality: 50,
    maxWidth: 300,
    maxHeight: 300);
_cropImage(pickedFilefile.path);

}

 _cropImage(filePath) async {
File croppedImage = await ImageCropper.cropImage(
    sourcePath: filePath,
    aspectRatioPresets: [
      CropAspectRatioPreset.square,
      CropAspectRatioPreset.ratio3x2,
      CropAspectRatioPreset.original,
      CropAspectRatioPreset.ratio4x3,
      CropAspectRatioPreset.ratio16x9
    ],
    compressFormat: ImageCompressFormat.jpg,

    androidUiSettings: AndroidUiSettings(
      toolbarColor: Colors.blueAccent,
      toolbarWidgetColor: Colors.white,
      toolbarTitle: "CROP",
      statusBarColor: Colors.blueAccent[900],
      initAspectRatio: CropAspectRatioPreset.original,
      lockAspectRatio: false,
    ),
    iosUiSettings: IOSUiSettings(
      minimumAspectRatio: 1.0,
    ));
imageFile = croppedImage;
imgsize = await imageFile.length();
setState(() {});

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM