What is wrong in here ? This is the 1st program i write in Flutter, and it failed. Please help me, this is a copy character for character from the tutorial

import 'dart:io';

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

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

}


Solution 1: OctopuSS7

First off, that's dart, not flutter. Flutter is the framework. If you are learning just dart at the moment, InteliJ IDEA is the best dart ide. There is a community edition available for free.

Something like this will work:

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(); doesn't actually return a String, so that you need to use var (infered typing). Use name.runtimeType; to find the type that it returns.


Solution 2: Ουιλιαμ Αρκευα

This error is about "Null Safety", readLineSync returns 'String?', and your variable input does not accept null-values. This code can help you:

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

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

  print('Done!');
}


Solution 3: Leon Presby

You can also change String to String? like this:

import 'dart:io';

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

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


Solution 4: Mohammed Ouedrhiri

It's Just Because in Dart 3 there is a feature Added Called Null Safety which is used to guarantee that the input won't Be Null So you need just add a '!' 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 ');

}


Solution 5: Mr-Goonies

The solution to your problem is as follows:

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');

}


Solution 6: JMax

Dart 3 has introduced "Null Safety". This means readLineSync returns 'String?', which accepts null values, but 'String' does not.
One way of fixing this is to use '.toString()'. This will return the string "null" instead of null.

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

Note that readLineSync() returns a blank string when you enter nothing, so you will only see "Hi nice to meet u" and not "Hi null nice to meet you"

This also works on a standard string...

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