Flutter: Difference in initializing variables in a Class
up vote
2
down vote
favorite
Currently I'm assigning all variables through initState however I'm seeing that there is no need to assign the variables through initState as I can just assign the variable with a value directly. What is the order of these assignments and how are they different? Why and when would you choose one instead of the other?
class Person {
String name = "John";
@override
void initState(){
....
....
}
}
vs
class Person {
String name;
@override
void initState(){
name = "John";
}
}
class oop dart flutter
add a comment |
up vote
2
down vote
favorite
Currently I'm assigning all variables through initState however I'm seeing that there is no need to assign the variables through initState as I can just assign the variable with a value directly. What is the order of these assignments and how are they different? Why and when would you choose one instead of the other?
class Person {
String name = "John";
@override
void initState(){
....
....
}
}
vs
class Person {
String name;
@override
void initState(){
name = "John";
}
}
class oop dart flutter
add a comment |
up vote
2
down vote
favorite
up vote
2
down vote
favorite
Currently I'm assigning all variables through initState however I'm seeing that there is no need to assign the variables through initState as I can just assign the variable with a value directly. What is the order of these assignments and how are they different? Why and when would you choose one instead of the other?
class Person {
String name = "John";
@override
void initState(){
....
....
}
}
vs
class Person {
String name;
@override
void initState(){
name = "John";
}
}
class oop dart flutter
Currently I'm assigning all variables through initState however I'm seeing that there is no need to assign the variables through initState as I can just assign the variable with a value directly. What is the order of these assignments and how are they different? Why and when would you choose one instead of the other?
class Person {
String name = "John";
@override
void initState(){
....
....
}
}
vs
class Person {
String name;
@override
void initState(){
name = "John";
}
}
class oop dart flutter
class oop dart flutter
asked Nov 20 at 0:10
ZeroNine
129313
129313
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
In your first example, the assignment takes place during construction. You might want to use this form if name
is final
.
In the second example, the assignment takes place when initState
is called, which could be zero, one or more times. Presumably you are referring to the initState
of State<T>
which the framework calls once, after construction.
add a comment |
up vote
1
down vote
The difference is that the first variable cannot be assigned dynamic content to, like AnimationController(vsync: this)
, you have to do that in initState.
I would guess initState assigning decreases performance a little bit, because you have more options.
I'd recommend using the regular assigning of variables whenever it's possible, and using initState() only when you have to.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53384418%2fflutter-difference-in-initializing-variables-in-a-class%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
In your first example, the assignment takes place during construction. You might want to use this form if name
is final
.
In the second example, the assignment takes place when initState
is called, which could be zero, one or more times. Presumably you are referring to the initState
of State<T>
which the framework calls once, after construction.
add a comment |
up vote
1
down vote
In your first example, the assignment takes place during construction. You might want to use this form if name
is final
.
In the second example, the assignment takes place when initState
is called, which could be zero, one or more times. Presumably you are referring to the initState
of State<T>
which the framework calls once, after construction.
add a comment |
up vote
1
down vote
up vote
1
down vote
In your first example, the assignment takes place during construction. You might want to use this form if name
is final
.
In the second example, the assignment takes place when initState
is called, which could be zero, one or more times. Presumably you are referring to the initState
of State<T>
which the framework calls once, after construction.
In your first example, the assignment takes place during construction. You might want to use this form if name
is final
.
In the second example, the assignment takes place when initState
is called, which could be zero, one or more times. Presumably you are referring to the initState
of State<T>
which the framework calls once, after construction.
answered Nov 20 at 2:52
Richard Heap
4,9792313
4,9792313
add a comment |
add a comment |
up vote
1
down vote
The difference is that the first variable cannot be assigned dynamic content to, like AnimationController(vsync: this)
, you have to do that in initState.
I would guess initState assigning decreases performance a little bit, because you have more options.
I'd recommend using the regular assigning of variables whenever it's possible, and using initState() only when you have to.
add a comment |
up vote
1
down vote
The difference is that the first variable cannot be assigned dynamic content to, like AnimationController(vsync: this)
, you have to do that in initState.
I would guess initState assigning decreases performance a little bit, because you have more options.
I'd recommend using the regular assigning of variables whenever it's possible, and using initState() only when you have to.
add a comment |
up vote
1
down vote
up vote
1
down vote
The difference is that the first variable cannot be assigned dynamic content to, like AnimationController(vsync: this)
, you have to do that in initState.
I would guess initState assigning decreases performance a little bit, because you have more options.
I'd recommend using the regular assigning of variables whenever it's possible, and using initState() only when you have to.
The difference is that the first variable cannot be assigned dynamic content to, like AnimationController(vsync: this)
, you have to do that in initState.
I would guess initState assigning decreases performance a little bit, because you have more options.
I'd recommend using the regular assigning of variables whenever it's possible, and using initState() only when you have to.
answered Nov 20 at 6:33
01leo
278111
278111
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53384418%2fflutter-difference-in-initializing-variables-in-a-class%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown