0

我正在尝试调试我用颤振编写的 ios 应用程序。android 版本运行良好,但 ios 版本在按下按钮进入特定屏幕时似乎不断吐痰。错误是:

引发了另一个异常:FormatException: Invalid number (at character 1)

我的研究表明页面上某处有一个空值,但我看不到它,而且我不知道如何在 Android Studio 的 ios 模拟器中进行调试。任何人都可以建议吗?

我要去的页面的代码如下:

//1) fO2(default to 4.76)
//2) Bar vs PSI?? Probably in V2
//3) Owner Name
import 'package:ccrchecklist/main.dart';
import 'package:flutter/material.dart';
import './myUtils.dart';

class settingsPage extends StatefulWidget {
  @override
  _settingsPage createState() => _settingsPage();

}

class _settingsPage extends State{
  final _name = TextEditingController(text: myUtils.getSharedPref('name'));

  int _radioBarPSIValue = int.parse(myUtils.getSharedPref('bar'));
  int _radioDecimalValue = int.parse(myUtils.getSharedPref('decimal'));


  final _formKey = GlobalKey<FormState>();
  bool _validator1 = false;
  bool _validator2 = false;
  bool _validator3 = false;

  String name = '';


  void _handleBarPSIRadioValueChange(int value) {
    setState(() {
      _radioBarPSIValue = value;
      print("Setting Bar PSI");
      switch (_radioBarPSIValue) {
        case 0:
          myUtils.setSharedPref('bar', '0');  //Set to Bar
          break;
        case 1:
          myUtils.setSharedPref('bar', '1');  //Set to PSI
          break;
      }
    });
  }
  void _handleDecimalRadioValueChange(int value) {
    setState(() {
      _radioDecimalValue = value;
      print("Setting Bar PSI");
      switch (_radioDecimalValue) {
        case 0:
          myUtils.setSharedPref('decimal', '0');  //Set to Bar
          break;
        case 1:
          myUtils.setSharedPref('decimal', '1');  //Set to PSI
          break;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: ListView(
          padding: EdgeInsets.symmetric(horizontal: 24.0),
          children: <Widget>[
            SizedBox(height: 120.0),
            //Name
            Form(
              key: _formKey,
              child: Column(
                children: <Widget>[
                  //Name field
                  new TextFormField(
                    keyboardType: TextInputType.text,
                    controller: _name,
                    autovalidate: _validator1,
                    decoration: const InputDecoration(
                      icon: Icon(Icons.person),
                      hintText: 'Your Name',
                      labelText: 'Name',
                    ),
                    onChanged: (String value) {
                      name = _name.text;
                      setState(() {
                        _validator1 = true;
                      });
                    },
                    validator: (String value) {
                      if(value.isEmpty){
                        return "Field is required";
                      }
                      else {
                        return null;
                      }
                    },
                  ),
                  //Bar or PSI
                  Row(
                    children: <Widget>[
                      Radio(
                        value: 0,
                        groupValue: _radioBarPSIValue,
                        onChanged: _handleBarPSIRadioValueChange,
                      ),
                      Text(
                        'Bar',
                        style: new TextStyle(fontSize: 16.0),
                      ),
                      Radio(
                        value: 1,
                        groupValue: _radioBarPSIValue,
                        onChanged: _handleBarPSIRadioValueChange,
                      ),
                      Text(
                        'PSI',
                        style: new TextStyle(fontSize: 16.0),
                      ),
                    ]
                  ),
                  ButtonBar(
                    children: <Widget>[
                      //Clear Button
                      FlatButton(
                        child: Text('Cancel'),
                        onPressed: () {
                          Navigator.push(
                            context,
                            MaterialPageRoute(builder: (context) => HomeScreen()),);
                        },
                      ),
                      RaisedButton(
                        child: Text('SAVE'),
                        onPressed: () {
                          print(name);
                          _handleBarPSIRadioValueChange(_radioBarPSIValue);
                          if(name != '')
                            myUtils.setSharedPref('name', name);
                          Navigator.push(
                            context,
                            MaterialPageRoute(builder: (context) => HomeScreen()),);
                        }
                      ),
                    ]
            ),
          ],
        ),
      ),])));
  }
}```
4

0 回答 0