I have following problem:
I have a Stafeful Widget where I pass the parameter [Text('Test1'), Text('Test2')]:
class FirstWidget extends StatefulWidget {
final List<Text> names;
const FirstWidget(this.names);
@override
_FirstWidgetState createState() => _FirstWidgetState();
}
class _FirstWidgetState extends State<FirstWidget> {
late List<Text> stateNames;
@override
void initState() {
stateNames = widget.names;
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ElevatedButton(
child: Text('Click Me'),
onPressed: () {
stateNames.add(Text('This is the new Test3'));
print('STATE: $stateNames');
print('WIDGET: ${widget.names}');
},
),
);
}
}
When I press the Button, a new Text Widget gets added to the List and I get following print in the console:
STATE: [Text("Test1"), Text("Test2"), Text("This is the new Test3")]
WIDGET: [Text("Test1"), Text("Test2"), Text("This is the new Test3")]
I don't understand that, because I only added the Text to the stateNames variable. Where is the connection between widget.names and stateNames??
I would expect this output:
STATE: [Text("Test1"), Text("Test2"), Text("This is the new Test3")]
WIDGET: [Text("Test1"), Text("Test2")]
How can I prevent this behaviour, that also the widget variable gets changed?