When changing a DateTime
property of a copy of an object, it is also updating the original object. In the below code, when the button is pressed, I expect only the _reminder.dueDate
to be updated, but both _reminder.dueDate
and widget.reminder.dueDate
are being updated at the same time.
import 'package:flutter/material.dart';
import 'package:realminder/models/reminder.dart';
class Test extends StatefulWidget {
final Reminder reminder; // <-- Original object
Test({
@required this.reminder,
});
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
Reminder _reminder;
@override
void initState() {
_reminder = widget.reminder; // <-- Create a copy of object
super.initState();
}
@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed: () {
_reminder.dueDate = DateTime.now(); // <-- Both objects being updated here... Why?
},
);
}
}