Flutter 颤振-图像选择器问题 导入“包装:颤振/材料.省道”; 导入“login_page.dart”; 导入“sign_in.dart”; 导入“包:image_picker/image_picker.dart”; 导入“包:firebase_ml_vision/firebase_ml_vision.dart”; 导入“包:cloud_firestore/cloud_firestore.dart”; 类FirstScreen扩展了无状态小部件{ var myDatabase=Firestore.instance; @凌驾 小部件构建(构建上下文){ 返回材料PP( 家:脚手架( appBar:appBar( 标题:中心(child:Text(“IT实习生是最好的!!”), ), 背景颜色:Colors.white, 正文:专栏( mainAxisAlignment:mainAxisAlignment.center, 儿童:[ 正文( “欢迎使用Krea的官方应用程序!”, textAlign:textAlign.center, 样式:TextStyle( fontWeight:fontWeight.w800, 字体大小:40.0, 颜色:颜色。黑色), ), 尺寸箱(高度:30.0), 容器( 子项:Image.asset('assets/krea.png'), ), 大小盒子( 身高:50.0, 宽度:250.0, 子项:分隔符(颜色:Colors.blueAccent), ), 图标( 我的脸, 尺寸:120, ), 正文( “Akshay Jain”, 样式:TextStyle( 字体大小:40.0, 颜色:颜色,黑色, fontWeight:fontWeight.bold, ), ), 正文( “Krea_学生生活水平100”, 样式:TextStyle( 字体大小:18.0, 颜色:颜色,黑色, fontWeight:fontWeight.normal, 字母间距:1.0, ), ), 尺寸箱(高度:20.0), 升起的按钮( 已按下:(){ ImagePicker.getImage(源:ImageSource.camera) .然后((照片){ 条形码检测器=FirebaseVision.instance .条形码检测器(条形码检测器选项( 条码格式:BarcodeFormat.qrCode); 检测器 .detectInImage(FirebaseVisionImage.fromFile(照片)) .然后((条形码){ 如果(条形码长度>0){ var barcode=条形码[0];//选择第一个条形码 myDatabase.collection(“qr_代码”)。添加({ “原始数据”:barcode.rawValue, “时间”:新的DateTime.now().millissecondssinceepoch }).然后(){ 打印(增加一份文件); }); 显示对话框( 上下文:上下文, 生成器:(上下文){ 返回新警报对话框( 标题:新文本(“二维码内容”), 内容:新文本(条形码.原始值), 行动:[ 新扁平按钮( 已按下:(){ Navigator.of(context.pop(); }, 子项:新文本(“确定”) ], ); }); } }); }); }, 子项:新文本(“捕获二维码”), FloatingActionButton.extended( 已按下:(){ signOutGoogle(); Navigator.of(context).pushandremoveintil( MaterialPage路线(生成器:(上下文){ 返回登录页面(); }),ModalRoute.withName(“/”); }, 背景颜色:Colors.blue, 图标:图标(Icons.lock), 标签:文本(“注销”), ), ], ), ), ); } }

Flutter 颤振-图像选择器问题 导入“包装:颤振/材料.省道”; 导入“login_page.dart”; 导入“sign_in.dart”; 导入“包:image_picker/image_picker.dart”; 导入“包:firebase_ml_vision/firebase_ml_vision.dart”; 导入“包:cloud_firestore/cloud_firestore.dart”; 类FirstScreen扩展了无状态小部件{ var myDatabase=Firestore.instance; @凌驾 小部件构建(构建上下文){ 返回材料PP( 家:脚手架( appBar:appBar( 标题:中心(child:Text(“IT实习生是最好的!!”), ), 背景颜色:Colors.white, 正文:专栏( mainAxisAlignment:mainAxisAlignment.center, 儿童:[ 正文( “欢迎使用Krea的官方应用程序!”, textAlign:textAlign.center, 样式:TextStyle( fontWeight:fontWeight.w800, 字体大小:40.0, 颜色:颜色。黑色), ), 尺寸箱(高度:30.0), 容器( 子项:Image.asset('assets/krea.png'), ), 大小盒子( 身高:50.0, 宽度:250.0, 子项:分隔符(颜色:Colors.blueAccent), ), 图标( 我的脸, 尺寸:120, ), 正文( “Akshay Jain”, 样式:TextStyle( 字体大小:40.0, 颜色:颜色,黑色, fontWeight:fontWeight.bold, ), ), 正文( “Krea_学生生活水平100”, 样式:TextStyle( 字体大小:18.0, 颜色:颜色,黑色, fontWeight:fontWeight.normal, 字母间距:1.0, ), ), 尺寸箱(高度:20.0), 升起的按钮( 已按下:(){ ImagePicker.getImage(源:ImageSource.camera) .然后((照片){ 条形码检测器=FirebaseVision.instance .条形码检测器(条形码检测器选项( 条码格式:BarcodeFormat.qrCode); 检测器 .detectInImage(FirebaseVisionImage.fromFile(照片)) .然后((条形码){ 如果(条形码长度>0){ var barcode=条形码[0];//选择第一个条形码 myDatabase.collection(“qr_代码”)。添加({ “原始数据”:barcode.rawValue, “时间”:新的DateTime.now().millissecondssinceepoch }).然后(){ 打印(增加一份文件); }); 显示对话框( 上下文:上下文, 生成器:(上下文){ 返回新警报对话框( 标题:新文本(“二维码内容”), 内容:新文本(条形码.原始值), 行动:[ 新扁平按钮( 已按下:(){ Navigator.of(context.pop(); }, 子项:新文本(“确定”) ], ); }); } }); }); }, 子项:新文本(“捕获二维码”), FloatingActionButton.extended( 已按下:(){ signOutGoogle(); Navigator.of(context).pushandremoveintil( MaterialPage路线(生成器:(上下文){ 返回登录页面(); }),ModalRoute.withName(“/”); }, 背景颜色:Colors.blue, 图标:图标(Icons.lock), 标签:文本(“注销”), ), ], ), ), ); } },flutter,dart,imagepicker,Flutter,Dart,Imagepicker,我们得到的错误是,在第62行,它说不能使用静态访问来访问实例成员“getImage”。这就是整个代码失败的地方。这似乎是一个软件包问题,但由于getImage行的原因,QR代码未被处理。错误消息是不言自明的。将ImagePicker.getImage替换为实例调用,而不是静态类调用,如 import 'package:flutter/material.dart'; import 'login_page.dart'; import 'sign_in.dart'; import 'package:i

我们得到的错误是,在第62行,它说不能使用静态访问来访问实例成员“getImage”。这就是整个代码失败的地方。这似乎是一个软件包问题,但由于getImage行的原因,QR代码未被处理。

错误消息是不言自明的。将ImagePicker.getImage替换为实例调用,而不是静态类调用,如

import 'package:flutter/material.dart';
import 'login_page.dart';
import 'sign_in.dart';
import 'package:image_picker/image_picker.dart';
import 'package:firebase_ml_vision/firebase_ml_vision.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class FirstScreen extends StatelessWidget {
  var myDatabase = Firestore.instance;
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Center(child: Text('IT Interns are the best!!')),
        ),
        backgroundColor: Colors.white,
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Welcome to Krea\'s Official App!',
              textAlign: TextAlign.center,
              style: TextStyle(
                  fontWeight: FontWeight.w800,
                  fontSize: 40.0,
                  color: Colors.black),
            ),
            SizedBox(height: 30.0),
            Container(
              child: Image.asset('assets/krea.png'),
            ),
            SizedBox(
              height: 50.0,
              width: 250.0,
              child: Divider(color: Colors.blueAccent),
            ),
            Icon(
              Icons.face,
              size: 120,
            ),
            Text(
              'Akshay Jain',
              style: TextStyle(
                fontSize: 40.0,
                color: Colors.black,
                fontWeight: FontWeight.bold,
              ),
            ),
            Text(
              'Krea_StudentLife_Level_100',
              style: TextStyle(
                fontSize: 18.0,
                color: Colors.black,
                fontWeight: FontWeight.normal,
                letterSpacing: 1.0,
              ),
            ),
            SizedBox(height: 20.0),
            RaisedButton(
                onPressed: () {
                  ImagePicker.getImage(source: ImageSource.camera)
                      .then((photo) {
                    BarcodeDetector detector = FirebaseVision.instance
                        .barcodeDetector(BarcodeDetectorOptions(
                            barcodeFormats: BarcodeFormat.qrCode));
                    detector
                        .detectInImage(FirebaseVisionImage.fromFile(photo))
                        .then((barcodes) {
                      if (barcodes.length > 0) {
                        var barcode = barcodes[0]; // Pick first barcode

                        myDatabase.collection("qr_codes").add({
                          "raw_data": barcode.rawValue,
                          "time": new DateTime.now().millisecondsSinceEpoch
                        }).then((_) {
                          print("One document added.");
                        });

                        showDialog(
                            context: context,
                            builder: (context) {
                              return new AlertDialog(
                                title: new Text("QR Code Contents"),
                                content: new Text(barcode.rawValue),
                                actions: <Widget>[
                                  new FlatButton(
                                      onPressed: () {
                                        Navigator.of(context).pop();
                                      },
                                      child: new Text("OK"))
                                ],
                              );
                            });
                      }
                    });
                  });
                },
                child: new Text("Capture QR Code")),
            FloatingActionButton.extended(
              onPressed: () {
                signOutGoogle();
                Navigator.of(context).pushAndRemoveUntil(
                    MaterialPageRoute(builder: (context) {
                  return LoginPage();
                }), ModalRoute.withName('/'));
              },
              backgroundColor: Colors.blue,
              icon: Icon(Icons.lock),
              label: Text('Sign Out'),
            ),
          ],
        ),
      ),
    );
  }
}

首先,需要获取ImagePicker()的实例:

然后在按钮中单击“使用此创建的实例”:

class FirstScreen extends StatelessWidget {
  var picker = ImagePicker();

请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。请发布完整错误或stacktrace。看看,嘿!它可以工作,但我得到了一个错误:参数类型“PickedFile”无法分配给参数类型“File”。(参数\u type\u not \u assignable at[krea\u app\u security]lib\first\u screen.dart:68)您认为如何?@AppDevelopment101请共享您的代码和图像\u选取器依赖项的版本号。图像\u选取器:^0.6.7+4,我的代码是相同的,只是在var myDatabase上面的第9行添加了这个,并将第63行更改为picker.getImage(来源:ImageSource.camera).then((照片){BarcodeDetector=FirebaseVision.instanceHey,有没有相同的运气?@AppDevelopment101更改为:
FirebaseVisionImage.fromFile(File(photo.path))
class FirstScreen extends StatelessWidget {
  var picker = ImagePicker();
picker.getImage(source: ImageSource.camera).then((photo) {});