方法 'get' 在 null 上被调用接收者:空尝试调用:get(1)

问题描述

所以我制作了这个 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 (将#修改为@)