问题描述
所以我制作了这个 Flutter 应用程序,它将单词翻译成 baybayin(仍然有关于它的错误,请也帮我解决这个问题)。该应用程序将有一个使用 Hive 的数据库。它工作得很好。当我重新加载我的应用程序部分时,我设法做到了这一点。我注意到前几天,当我应该继续设计我的应用程序时,我收到了这个错误
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following NoSuchMethodError was thrown building TranslatePage(dirty,state: _TranslatePageState#347de):
The method 'get' was called on null.
Receiver: null
Tried calling: get(1)
The relevant error-causing widget was:
TranslatePage file:///C:/Users/me/AndroidStudioProjects/baybay_app/lib/Translate/Translate.dart:35:18
When the exception was thrown,this was the stack:
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1 _TranslatePageState.build (package:baybay_app/Translate/Translate.dart:189:35)
#2 StatefulElement.build (package:Flutter/src/widgets/framework.dart:4744:28)
#3 ComponentElement.performRebuild (package:Flutter/src/widgets/framework.dart:4627:15)
#4 StatefulElement.performRebuild (package:Flutter/src/widgets/framework.dart:4800:11)
...
════════════════════════════════════════════════════════════════════════════════════════════════════
我尝试了我在谷歌上找到的方法,我尝试了很多方法,但我总是在这里结束。如果我重新加载它,它工作正常。但是当我退出翻译药水时(我转到我的 Baybayin 应用程序的主页),它再次显示。每次我重新加载它时它都能正常工作。当我热重启它时,错误再次显示。我不能继续重新加载它,尤其是当我释放它时,
这是我的代码。如您所见,我尝试了多种方法来解决该错误。我的代码可能不干净。因为我尝试了多种方法。
class Translate extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future:
DefaultAssetBundle.of(context).loadString(
'assets/lang/tl-Fil.json',cache: false),builder: (context,snapshot) {
List mydata = json.decode(snapshot.data.toString());
if (mydata == null) {
return Scaffold(
body: Center(
child: Text(
"Loading",),);
} else {
return TranslatePage(mydata: mydata);
}
},);
}
}
class TranslatePage extends StatefulWidget {
final List mydata;
// final List<TranslatePageLetter> _TranslatePageLetter = TranslatePageletter;
TranslatePage({Key key,@required this.mydata}) : super(key: key);
@override
_TranslatePageState createState() => _TranslatePageState(mydata);
}
class _TranslatePageState extends State<TranslatePage> {
Box Box;
// final letters = [
// let(
// englet: "ba",// bylet: "b"
// ),// let(englet: "be",bylet: "be"),// let(englet: "bi",bylet: "bi"),// let(englet: "bo",bylet: "bo"),// let(englet: "bu",bylet: "bu"),// let(englet: "b",bylet: "b+")
// ];
// List<let> letter;
// @override
// void initState() {
// super.initState();
//
// }
Future openBox() async {
var dir = await getApplicationDocumentsDirectory();
Hive.init(dir.path);
Box = await Hive.openBox('translate');
return;
}
final List mydata;
_TranslatePageState(this.mydata);
final translate = TextEditingController();
String tagalog;
String translateoutput = "Baybay";
var translatedphrase = '';
int charLength = 0;
String text;
int even = 2;
bool istyping = false;
int keys = 1;
String drop;
// StreamController _streamController;
// Stream _stream;
List<TranslateLetter> translateletter;
_onChanged(String value) {
setState(() {
charLength = value.length;
});
}
@override
void dispose() {
translate.dispose();
super.dispose();
}
void hiveOperation() async {
await openBox();
}
@override
void initState() {
super.initState();
hiveOperation();
// _streamController = StreamController();
// _stream = _streamController.stream;
}
void putdata() {
setState(() {
Box.put(keys,translate.text);
});
}
String getdata(keys,String drop) {
setState(() {
if (Box.isEmpty == true) {
drop = "Null";
}
else {
drop = Box.get(keys);
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Center(
child: Text('Translate',style: TextStyle(
fontFamily: 'Risque',color: Color.fromARGB(250,189,208,156)
),backgroundColor: Color.fromARGB(250,64,79,36),body: Column(
mainAxisAlignment: MainAxisAlignment.start,children: [
RaisedButton(onpressed: () {},child: Text('Guide')),Expanded(
child: Container(child: Column(
children: [
TextField(
controller: translate,autocorrect: true,decoration: Inputdecoration(
hintText: 'Enter Some Text Here',suffixIcon: IconButton(
icon: Icon(Icons.arrow_drop_down,onpressed: () {
},)),onChanged: _onChanged,DropdownButton(
items: [
DropdownMenuItem<String>(
child: Text(
Box.get(1)
),onTap: () {
translate.text = Box.get(1);
},DropdownMenuItem(
value: Box.get(2),child: Text(
Box.get(2),onTap: () {
translate.text = Box.get(2);
},DropdownMenuItem(
value: Box.get(3),child: Text(
Box.get(3),onTap: () {
translate.text = Box.get(3);
},DropdownMenuItem(
value: Box.get(4),child: Text(
Box.get(4),onTap: () {
translate.text = Box.get(4);
},DropdownMenuItem(
value: Box.get(5),child: Text(
Box.get(5),onTap: () {
translate.text = Box.get(5);
},)
],onChanged: (value) {
Box.add(keys);
},)
],color: Colors.green[100]),RaisedButton(onpressed: () {
Translate();
},child: Text('translate')),Expanded(
child: Container(
width: MediaQuery
.of(context)
.size
.width,height: MediaQuery
.of(context)
.size
.height * 0.6,color: Colors.brown[500],child: Column(
children: [
Row(
children: [
Padding(
padding: EdgeInsets.all(8.0),child:
Text("Length = $charLength",style: TextStyle(fontSize: 20))
),MaterialButton(onpressed: () {},child: Icon(Icons.clear)),child: Icon(Icons.copy))
]
),Text(translateoutput,style: TextStyle(
fontFamily: 'Baybayin'
))
],)
]
)
);
}
void Translate() {
// int chareven = charLength * even;
// setState(() {
//
// print(chareven);
//
// if(charLength == even){
// translate.text.split("");
// }
//
//
// if (translate.text == null) {
// translateoutput= "null";
// }
// else
// translateoutput = mydata[0][translate.text];
// print(translateoutput);
// });
// if (translate.text != mydata[0][translate.text]) {
// translate.text = translate.text;
//
// }
// else{
// translate.text = mydata[0][translate.text];
// }
// Queue.from(letters);
// print(letters);
setState(() {
if (translateoutput != mydata[0][translate.text]) {
translateoutput = translate.text;
}
else {
translateoutput = mydata[0][translate.text];
}
});
putdata();
print(Box.get(keys));
keys++;
Box.add(translate.text);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)