我正在尝试调试我用颤振编写的 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()),);
}
),
]
),
],
),
),])));
}
}```