List 将列表传递给QR生成器
我是新的编程与颤振和我试图创建一个比萨饼应用程序。首先你制作比萨饼,选择配料,然后你会得到一份你点的比萨饼清单。该列表和qr生成器同样有效,但它们来自单独的教程,我在连接它们时遇到问题。我似乎无法将订单列表传递给发电机List 将列表传递给QR生成器,list,dart,flutter,qr-code,List,Dart,Flutter,Qr Code,我是新的编程与颤振和我试图创建一个比萨饼应用程序。首先你制作比萨饼,选择配料,然后你会得到一份你点的比萨饼清单。该列表和qr生成器同样有效,但它们来自单独的教程,我在连接它们时遇到问题。我似乎无法将订单列表传递给发电机 import 'package:flutter/material.dart'; import 'package:qr_flutter/qr_flutter.dart'; import 'package:flutter/services.dart'; import 'dart:as
import 'package:flutter/material.dart';
import 'package:qr_flutter/qr_flutter.dart';
import 'package:flutter/services.dart';
import 'dart:async';
import 'dart:typed_data';
import 'dart:ui';
import 'dart:io';
import 'package:flutter/rendering.dart';
import 'package:path_provider/path_provider.dart';
import 'package:pizza_app/screens/review.dart';
import 'package:pizza_app/code/pizza.dart';
class GenerateQR extends StatefulWidget {
List<String> _list = new List<String>();
@override
State<StatefulWidget> createState() => GenerateQRState();
GenerateQR(list){
_list = list;
}
}
class GenerateQRState extends State<GenerateQR> {
static const double _topSectionTopPadding = 50.0;
static const double _topSectionBottomPadding = 20.0;
static const double _topSectionHeight = 50.0;
GlobalKey globalKey = new GlobalKey();
List<String> _dataList = new List<String>();
//String _dataString = "Hello from this QR";
String _inputErrorText;
final TextEditingController _textController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('QR Code Generator'),
actions: <Widget>[
IconButton(
icon: Icon(Icons.share),
onPressed: _captureAndSharePng,
)
],
),
body: _contentWidget(),
);
}
Future<void> _captureAndSharePng() async {
try {
RenderRepaintBoundary boundary = globalKey.currentContext.findRenderObject();
var image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
final tempDir = await getTemporaryDirectory();
final file = await new File('${tempDir.path}/image.png').create();
await file.writeAsBytes(pngBytes);
final channel = const MethodChannel('channel:me.alfian.share/share');
channel.invokeMethod('shareFile', 'image.png');
} catch(e) {
print(e.toString());
}
}
_contentWidget() {
final bodyHeight = MediaQuery.of(context).size.height - MediaQuery.of(context).viewInsets.bottom;
return Container(
color: const Color(0xFFFFFFFF),
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.only(
top: _topSectionTopPadding,
left: 20.0,
right: 10.0,
bottom: _topSectionBottomPadding,
),
child: Container(
height: _topSectionHeight,
child: Row(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(
child: TextField(
controller: _textController,
decoration: InputDecoration(
hintText: "Enter a custom message",
errorText: _inputErrorText,
),
),
),
Padding(
padding: const EdgeInsets.only(left: 10.0),
child: FlatButton(
child: Text("SUBMIT"),
onPressed: () {
setState((){
_dataList.add(_list); // This must be wrong
_inputErrorText = null;
});
},
),
)
],
),
),
),
Expanded(
child: Center(
child: RepaintBoundary(
key: globalKey,
child: QrImage(
data: _dataList,// I think that there is an error here too
size: 0.5 * bodyHeight,
onError: (ex) {
print("[QR] ERROR - $ex");
setState((){
_inputErrorText = "Error! Maybe your input value is too long?";
});
},
),
),
),
),
],
),
);
}
}
导入“包装:颤振/材料.省道”;
进口“包装:qr_颤振/qr_颤振.飞镖”;
导入“包:flifter/services.dart”;
导入“dart:async”;
导入“dart:键入的_数据”;
导入“dart:ui”;
导入“dart:io”;
导入“package:flatter/rendering.dart”;
导入“package:path_provider/path_provider.dart”;
导入“package:pizza_app/screens/review.dart”;
导入“package:pizza_app/code/pizza.dart”;
类GenerateQR扩展StatefulWidget{
列表_List=新列表();
@凌驾
State createState()=>GenerateQRState();
生成QR(列表){
_列表=列表;
}
}
类GenerateQRState扩展了状态{
静态常数double _=50.0;
静态常数double _topSectionBottomPadding=20.0;
静态常数双上断面高度=50.0;
GlobalKey GlobalKey=新的GlobalKey();
列表_dataList=新列表();
//String _dataString=“来自此QR的你好”;
字符串_inputErrorText;
最终文本编辑控制器_textController=TextEditingController();
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“二维码生成器”),
行动:[
图标按钮(
图标:图标(Icons.share),
按下按钮:\ U captureAndSharePng,
)
],
),
正文:_contentWidget(),
);
}
Future\u captureAndSharePng()异步{
试一试{
RenderRepaintBoundary=globalKey.currentContext.FindEnderObject();
var image=await boundary.toImage();
ByteData ByteData=await image.toByteData(格式:ImageByteFormat.png);
Uint8List pngBytes=byteData.buffer.asUint8List();
final tempDir=await getTemporaryDirectory();
final file=等待新文件('${tempDir.path}/image.png')。create();
wait file.writeAsBytes(PNGB);
final channel=const MethodChannel('channel:me.alfian.share/share');
channel.invokeMethod('shareFile','image.png');
}捕获(e){
打印(如toString());
}
}
_contentWidget(){
final bodyHeight=MediaQuery.of(context).size.height-MediaQuery.of(context).viewInsets.bottom;
返回容器(
颜色:常量颜色(0xFFFFFF),
子:列(
儿童:[
填充物(
填充:仅限常量边设置(
顶部:添加,
左:20.0,
右图:10.0,
底部:顶部和底部填充物,
),
子:容器(
高度:_高度,
孩子:排(
mainAxisSize:mainAxisSize.max,
crossAxisAlignment:crossAxisAlignment.stretch,
儿童:[
扩大(
孩子:TextField(
控制器:_textController,
装饰:输入装饰(
hintText:“输入自定义消息”,
errorText:\u inputErrorText,
),
),
),
填充物(
填充:仅限常量边集(左:10.0),
孩子:扁平按钮(
儿童:文本(“提交”),
已按下:(){
设置状态(){
_dataList.add(_list);//这一定是错误的
_inputErrorText=null;
});
},
),
)
],
),
),
),
扩大(
儿童:中心(
子:重新绘制边界(
关键:环球银行,
孩子:QrImage(
data:_dataList,//我想这里也有一个错误
尺寸:0.5*车身高度,
onError:(ex){
打印(“[QR]错误-$ex”);
设置状态(){
_inputErrorText=“错误!可能您的输入值太长?”;
});
},
),
),
),
),
],
),
);
}
}
使用合适的分隔符,如管道(|
)符号,将字符串列表合并为一个字符串:
处理有人在文本字段中键入|
字符的情况
读取二维码的代码可用于再次将字符串拆分为字符串列表。使用合适的分隔符,如管道(
)符号,将字符串列表合并为单个字符串:
处理有人在文本字段中键入|
字符的情况
读取二维码的代码可用于再次将字符串拆分为字符串列表