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), 标签:文本(“注销”), ), ], ), ), ); } }
我们得到的错误是,在第62行,它说不能使用静态访问来访问实例成员“getImage”。这就是整个代码失败的地方。这似乎是一个软件包问题,但由于getImage行的原因,QR代码未被处理。错误消息是不言自明的。将ImagePicker.getImage替换为实例调用,而不是静态类调用,如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
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) {});