尝试获取条形码时"RangeError (index): Index out of range: no indices are valid: 0"



在Flutter中,我实际上为我的公司编写了一个智能手机应用程序。还有一个条形码阅读器,可以让顾客合法进入商店。

问题是,每当我想将13个数字的字符串转换为条形码时,我都会收到上面显示的错误。

第一次使用该应用程序时,客户将自己的号码输入到TextField中。数字(最初是一个字符串(将存储在一个私有变量_number中(也来自String类型(,以供进一步处理。

即使我使用功能

convert2barcode('1111111111116')

条形码显示正确,但不适用于

convert2barcode(_number)

我不知道为什么。如果我写

print(_number)

我得到了正确的结果(例如1111111111116(。

希望你能帮忙。如果您需要更多代码信息,请告诉我。

致以最良好的问候。

EDIT

我写了一个更简单的例子来理解我的意思。

我有一个TextField,其中一个数字字符串将在提交时转换为条形码。

import 'package:flutter/material.dart';
import 'barcode.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
home: GUI(),
);
}
}
class GUI extends StatefulWidget {
GUI({Key? key}) : super(key: key);
@override
State<GUI> createState() => _GUI();
}
class _GUI extends State<GUI> {
bool _isVisible = false;
String numer = "";
void showWidget() {
setState(() {
_isVisible = !_isVisible;
});
}
@override
Widget build(BuildContext contet) {
return Scaffold(
body: Visibility(
child: Row(
children: /*[
Text(_numer.runtimeType.toString())
]*/
Barcode.convert2Barcode(numer),
),
visible: _isVisible,
replacement: Column(
children: [
TextField(
onSubmitted: (value) {
numer = value;
showWidget();
},
),
],
),
),
);
}
}

这是导致异常的代码:

Barcode.convert2Barcode(numer),

如果我运行代码,我会在标题中显示错误。只有当我写

convert2barcode('1111111111116'),

条形码将正确显示。

我已经输出了带有runtimeType的变量的类型("1111111111116"和_numer(。它总是一样的(字符串(。即使我做了这样的

_numer = '1111111111116';
print(_numer);

我会得到正确的结果。

我真的不知道这个例外是什么原因。

当未调用TextFieldonSubmit时,number为空。这就是你出错的原因。

更换

Barcode.convert2Barcode(numer),

带有

if (number.isNotEmpty)
Barcode.convert2Barcode(numer),

相关内容

最新更新