首页 > 解决方案 > 必须将非空字符串提供给 Text 小部件错误到条件 alertdialogue 标题

问题描述

这是我的代码

Future<Map<String, dynamic>> userRegistration() async{

// Showing CircularProgressIndicator.
setState(() {
  visible = true ;
});

// Getting value from Controller
String fname = firstNameController.text;
String lname = lastNameController.text;
String email = emailController.text;
String phoneNumber = phoneNumberController.text;
String password = passwordController.text;

// SERVER API URL
var url = 'https://url_to_api';

// Store all data with Param Name.
var data = {'firstname': fname, 'lastname': lname, 'phone': phoneNumber, 'email': email, 'password' : password};

// Starting Web API Call.
var response = await http.post(url, body: data);

// Getting Server response into variable.
var message = jsonDecode(response.body);

var prompt;

message == message['success'] ? prompt = message['success'] : prompt = message['error'];





// If Web call Success then hide the CircularProgressIndicator.
if(response.contentLength > 0){
  setState(() {
    visible = false;
  });
}

// Showing Alert Dialog with Response JSON Message.
showDialog(
  context: context,
  builder: (BuildContext context) {
    return AlertDialog(
      title: Text(prompt),
      actions: <Widget>[
        FlatButton(
          child: Text("OK"),
          onPressed: () {
            Navigator.push(context, PageTransition(type: PageTransitionType.leftToRight, child: LoginPage()));
          },
        ),
      ],
    );
  },
);

}

我的 json 响应是 ["success"=>"请检查您的电子邮件以获取验证码"] 或 ["error"=>"用户已存在或帐户未验证,请检查您的电子邮件"]。但是如果我像这样构建我的三元操作,则警报对话框仅适用于错误

message == message['success'] ? prompt = message['success'] : prompt = message['error'];

如果我这样写,或者为了成功

message == message['error'] ? prompt = message['error'] : prompt = message['success'];

当它不起作用时,它会抛出此错误:

必须向 Text 小部件提供非空字符串。'package:flutter/src/widgets/text.dart':断言失败:第 285 行 pos 10:'data != null'

请帮助未知领域的菜鸟

标签: jsonflutter

解决方案


推荐阅读