Skip to content

Commit aa60cb2

Browse files
authored
Merge pull request #3 from erickzanardo/fix/state-remount
fix: state remount
2 parents 7ac7347 + b5a44f0 commit aa60cb2

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# 0.0.3
2+
3+
- fix: state remount
4+
15
# 0.0.2
26

37
- feat: add ticker feature

lib/src/phased.dart

+7
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,13 @@ class _PhasedState<T> extends State<Phased<T>>
150150
});
151151
}
152152

153+
@override
154+
void didUpdateWidget(Phased<T> old) {
155+
super.didUpdateWidget(old);
156+
old.state.removeListener(_update);
157+
widget.state.addListener(_update);
158+
}
159+
153160
@override
154161
void dispose() {
155162
_ticker?.dispose();

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: phased
22
description: Simplified state management focused on animations
33
repository: https://github.com/erickzanardo/phased
4-
version: 0.0.2
4+
version: 0.0.3
55

66
environment:
77
sdk: '>=2.18.0 <3.0.0'

test/src/phased_test.dart

+46
Original file line numberDiff line numberDiff line change
@@ -227,5 +227,51 @@ void main() {
227227

228228
expect(find.text('B'), findsOneWidget);
229229
});
230+
231+
testWidgets('attaches to a new state', (tester) async {
232+
final key = GlobalKey();
233+
final state = PhasedState(
234+
values: [true, false],
235+
autostart: false,
236+
ticker: Duration(milliseconds: 1),
237+
);
238+
await tester.pumpWidget(
239+
MaterialApp(
240+
home: Scaffold(
241+
body: StatefulBuilder(
242+
builder: (context, setState) {
243+
return Column(
244+
children: [
245+
ElevatedButton(
246+
child: Text('Rebuild'),
247+
onPressed: () {
248+
setState(() {});
249+
},
250+
),
251+
Center(
252+
child: Blink(
253+
key: key,
254+
state: state,
255+
),
256+
),
257+
],
258+
);
259+
},
260+
),
261+
),
262+
),
263+
);
264+
265+
expect(find.text('A'), findsOneWidget);
266+
267+
await tester.tap(find.text('Rebuild'));
268+
await tester.pump();
269+
270+
expect(find.text('B'), findsOneWidget);
271+
272+
await tester.pump();
273+
274+
expect(find.text('A'), findsOneWidget);
275+
});
230276
});
231277
}

0 commit comments

Comments
 (0)