Несколько вопросов, связанных с Flutter basic

#flutter #dart

#flutter #dart

Вопрос:

Я пришел из React и пытаюсь понять Flutter. Есть некоторые различия между dart vs JS и React vs Flutter. Тем не менее, это кажется немного похожим друг на друга. Однако существует некоторая путаница в отношении Flutter.

  1. void

Он не возвращает значение. Поэтому он используется для void main() . Означает ли это, что функция ‘main ()’ будет выполнена, и я никогда не смогу использовать повторно void main() ?

  1. <>

В коде у меня здесь

 class LoginScreen extends StatefulWidget {
  createState() {
    return new LoginScreenState();
  }
}

class LoginScreenState extends State<LoginScreen> {
  Widget build(context) {
    return Container(
        margin: EdgeInsets.all(20.0),
        child: Column(
          children: [
            emailField(),
            // passwordField(),
            // submitButton(),
          ],
        ));
  }
}
  

Я вижу, что State<LoginScreen> это связано class LoginScreen . Это расширение LoginScreen состояния?

 Future<int> successor = future.then((int value) {
  
  },
 
  

Однако в here Future <—— я не понимаю, почему в этом коде должно быть указано ‘int’. Как правильно использовать <> ?

  1. С сохранением состояния или без состояния

Могу ли я просто использовать Stateful все время, даже если у меня нет такого состояния, как React? Где нет разницы?

Комментарии:

1. Этот main() возврат void не имеет никакого отношения к тому, является ли он повторно используемым или нет. Он вызывается из-за побочного эффекта, как и другие функции, которые возвращают void (например print ). Обычно вам не нужно или не нужно вызывать main() его снова.

Ответ №1:

Вам нужно изучить базовый dart.

  1. void main() такой же, как main() . Единственное отличие заключается в объявлении возвращаемого типа. main() вызывается механизмом flutter только один раз.
  2. Читайте о дженериках. <> называется ромбовидным оператором и используется для указания типа чего-либо. Future<int> означает, что функция вернет что-то в будущем, и это будет строго int типа. Если вы не укажете тип, flutter будет рассматривать его как dynamic .
  3. Вы можете использовать stateful классы, если используете пакеты управления состоянием, такие как provider или rxdart для поддержания состояния.

Комментарии:

1. Насколько я вижу, он более близок к TypeScript. Я также изучаю Dart. Спасибо за ответы!

2. main() вызывается автоматически один раз, но это все равно функция; ее можно вызывать несколько раз, как и любую другую функцию. Например, main() может быть рекурсивным.

Ответ №2:

 class LoginScreen extends StatefulWidget {
  createState() {
    return new LoginScreenState();
  }
}

    enter code here

changed to 
class LoginScreen extends StatefulWidget {
  LoginScreenState createState()=>LoginScreenState();
  }
}

    enter code here

Stateful vs Stateless`enter code here`
stateful has state object and stateless has no state object.using stateful you can changes widget data .on other hand in stateful you cant