flutter 类型为“String?'不能赋给'String'类型的变量

vaj7vani  于 2023-05-19  发布在  Flutter
关注(0)|答案(6)|浏览(213)

这里怎么了?这是我用Flutter写的第一个程序,它失败了。请帮助我,这是一个复制字符为字符从教程

import 'dart:io';

void main() 
{
  stdout.writeln('Type in your name please');
  String  input = stdin.readLineSync();

  stdout.writeln('Hi $input nice to meet u ');
  
}
bqucvtff

bqucvtff1#

这只是因为在 dart 3中有一个特性被添加称为空安全,这是用来保证输入不会为空,所以你只需要添加一个'!' in Your 'stdin.readLineSync()' and You are done Here is The Code:

import 'dart:io';

    void main() 
    {
      stdout.writeln('Type in your name please');
      String  input = stdin.readLineSync()!;
    
    
      stdout.writeln('Hi $input nice to meet u ');
      

}
6yt4nkrj

6yt4nkrj2#

此错误是关于“Null Safety”,readLineSync返回'String?',并且变量input不接受空值。这段代码可以帮助你:

void main(List<String> args) {
  print('Type in your name please:');
  var input = stdin.readLineSync();

  print('Hi $input, nice to meet you');

  print('Done!');
}
kr98yfug

kr98yfug3#

你也可以把String改成String吗?就像这样:

import 'dart:io';

void main()
{
    stdout.writeln('Type in your name please');
    String? input = stdin.readLineSync();

    stdout.writeln('Hi $input nice to meet u ');
}
irtuqstp

irtuqstp4#

Dart 3引入了“Null Safety”。这意味着readLineSync返回'String?',它接受空值,但'String'不接受。
解决这个问题的一种方法是使用'.toString()'。这将返回字符串“null”而不是null。

main() {
  stdout.writeln('Type in your name please');
  String input = stdin.readLineSync().toString();
  stdout.writeln('Hi $input nice to meet u ');
}

请注意,当您什么都不输入时,readLineSync()返回一个空字符串,因此您将只看到“Hi nice to meet u”而不是“Hi null很高兴认识你”
这也适用于标准字符串。

String? aNullableString = null;
String aString = aNullableString.toString();
fhg3lkii

fhg3lkii5#

首先,那是 dart ,不是扑击。Flutter是框架。如果你现在只学习 dart ,InteliJ IDEA是最好的 dart ide。社区版是免费的。
这样的东西会起作用:

import 'dart:io';

void main(){
  stdout.write("Type in your name please: ");
  var name = stdin.readLineSync();
  stdout.writeln('Hi $input nice to meet u ');
}

stdin.readLineSync();实际上并不返回String,所以你需要使用var(推断类型)。使用name.runtimeType;查找它返回的类型。

z31licg0

z31licg06#

您的问题的解决方法如下:

import 'dart:io';

main() {
  stdout.writeln('Ingresa tu nombre'); //Genera un prompt para el ingreso de datos
  var nameUser = stdin.readLineSync(); //Almacena el dato ingresado en el prompt en la variable 'nameUser'
  print('Tu nombre es: $nameUser');

}

相关问题