У меня есть проблема, которую очень трудно объяснить ... Я создаю приложение для социальных сетей. Я написал страницу входа с помощью SharedPreferences, и пока я это делаю, я отправил адрес электронной почты и пароль по URL-адресу. URL-адрес, по которому я опубликовал данные, содержит некоторые значения идентификаторов. Когда я хочу получить эти значения id, флаттер выдает ошибку. Я добавлю код и ошибку ниже. пожалуйста, помогите мне ...
Страница входа и отправьте адрес электронной почты и пароль:
PostValuesModel postEmailAndPasswordValuesFromJson(String str) =>
PostValuesModel.fromJson(json.decode(str));
String postEmailAndPassword(PostValuesModel data) => json.encode(data.toJson());
class PostValuesModel {
String email;
String password;
int servisLogin;
String servisId;
PostValuesModel({
this.email,
this.password,
this.servisLogin,
this.servisId,
});
factory PostValuesModel.fromJson(Map<String, dynamic> json) =>
PostValuesModel(
email: json["email"],
password: json["password"],
servisLogin: json["login"],
servisId: json["servis_id"],
);
Map<String, dynamic> toJson() => {
"email": email,
"password": password,
"login": servisLogin,
"servis_id": servisId,
};
}
Future<PostValuesModel> postEmailAndPasswordValues(
String emailTitle,
String passwordTitle,
) async {
final String apiUrl = "https://rsad.com//dart.php";
final response = await http.post(apiUrl, body: {
"email": emailTitle,
"password": passwordTitle,
});
if (response.statusCode == 200) {
final String responseString = response.body;
return postEmailAndPasswordValuesFromJson(responseString);
} else {
print('Error');
}
}
class _LoginScreenState extends State<LoginScreen> {
TextEditingController emailController = TextEditingController();
TextEditingController passwordController = TextEditingController();
bool isLoggedIn = false;
String emailSession = '';
PostValuesModel _email;
PostValuesModel _password;
PostValuesModel _servisLogin;
PostValuesModel _servisId;
Widget _buildLoginButton() {
Widget _buildChild() {
return CupertinoButton(
onPressed: () async {
final String emailTitle = emailController.text.toString();
final String passwordTitle = passwordController.text.toString();
final PostValuesModel user = await postEmailAndPasswordValues(
emailTitle,
passwordTitle,
);
setState(() {
_email = user;
_password = user;
_servisLogin = user;
_servisId = user;
});
print(_servisId.servisId.toString());
if (_servisLogin.servisLogin == 0) {
Navigator.of(context);
} else {
Navigator.of(context).push(_routeServisLogin());
}
isLoggedIn ? logout() : loginUser();
//Navigator.of(context).push(_routeLogin());
},
padding: EdgeInsets.all(15.0),
color: Colors.red,
child: Text(
'Giriş Yap',
style: TextStyle(
color: Colors.white,
),
),
);
}
return Container(
padding: EdgeInsets.symmetric(vertical: 25.0),
width: double.infinity,
child: _buildChild(),
);
}
}
И я хочу получить значения сюда:
BekliyorModel bekliyorModelFromJson(String str) =>
BekliyorModel.fromJson(json.decode(str));
String bekliyorModelToJson(BekliyorModel data) => json.encode(data.toJson());
class BekliyorModel {
String servis_id;
String kategori;
BekliyorModel({this.servis_id, this.kategori});
factory BekliyorModel.fromJson(Map<String, dynamic> json) => BekliyorModel(
servis_id: json["servis_id"],
kategori: json["kategori"],
);
Map<String, dynamic> toJson() => {
"servis_id": servis_id,
"kategori": kategori,
};
}
Future<BekliyorModel> postAndFetchBekliyorDatas(
String servisIdTitle,
String kategoriTitle,
) async {
final String apiUrl =
"https://www.rsad.com/dart.php";
final response = await http.post(apiUrl, body: {
"kategori": kategoriTitle,
"servis_id": servisIdTitle,
});
if (response.statusCode == 200) {
final String responseString = response.body;
return bekliyorModelFromJson(responseString);
} else {
return null;
}
}
class _ServisProfilState extends State<ServisProfil> {
BekliyorModel _servisId;
BekliyorModel _kategori;
Widget _buildBekliyor() {
return Container(
height: 60,
child: RaisedButton(
highlightElevation: 0,
splashColor: Colors.transparent,
elevation: 0,
color: Colors.white,
child: Container(
alignment: Alignment.centerLeft,
child: Text(
'Bekliyor/Sonuçlanan',
style: TextStyle(fontSize: 18, color: Colors.black),
),
),
onPressed: () async {
PostValuesModel deneme;
final String servisIdTitle = deneme.servisId.toString();
final String kategoriTitle = 3.toString();
final BekliyorModel user = await postAndFetchBekliyorDatas(
kategoriTitle,
servisIdTitle,
);
setState(() {
_kategori = user;
_servisId = user;
});
print(servisIdTitle.toString());
// Navigator.of(context).push(
// CupertinoPageRoute(
// builder: (context) => Bekliyor(),
// ),
// );
}),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: 1,
color: Colors.black12,
),
),
),
);
}
}
это дает мне эту ошибку :
[VERBOSE-2:ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The getter 'servisId' was called on null.
Receiver: null
Tried calling: servisId
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1 _ServisProfilState._buildBekliyor.<anonymous closure>
package:ekspar/Servis/service_profile.dart:116
#2 _InkResponseState._handleTap
package:flutter/…/material/ink_well.dart:992
#3 _InkResponseState.build.<anonymous closure>
package:flutter/…/material/ink_well.dart:1098
#4 GestureRecognizer.invokeCallback
package:flutter/…/gestures/recognizer.dart:184
#5 TapGestureRecognizer.handleTapUp
package:flutter/…/gestures/tap.dart:524
#6 BaseTapGestureRecognizer._checkUp
package:flutter/…/gestures/tap.dart:284
#7 BaseTapGestureRecognizer.acceptGesture
package:flutter/…/gestures/tap.dart:256
#8 GestureArenaManager.sweep
package:flutter/…/gestures/arena.dart:158
#9 GestureBinding.handleEvent (<…>
Думаю, тут надо править:
final String servisIdTitle = deneme.servisId.toString();
помогите пожалуйста ...