@@ -273,6 +273,8 @@ void main() {
273273 testWidgets ('Test provider injection' , (tester) async {
274274 final NameContainer nameContainer = MockNameContainer ('Ale' );
275275
276+ var fullNameContainerProviderDisposed = false ;
277+
276278 final numberContainer1Provider = Provider (
277279 (_) => const NumberContainer (1 ),
278280 lazy: false ,
@@ -285,6 +287,12 @@ void main() {
285287 (_) => nameContainer,
286288 dispose: (provider) => provider.dispose (),
287289 );
290+ final fullNameContainerProvider = Provider .withArgument (
291+ (_, String surname) => MockNameContainer ('John $surname ' ),
292+ dispose: (provider) {
293+ fullNameContainerProviderDisposed = true ;
294+ },
295+ );
288296
289297 await tester.pumpWidget (
290298 MaterialApp (
@@ -294,32 +302,39 @@ void main() {
294302 nameContainerProvider,
295303 numberContainer1Provider,
296304 numberContainer2Provider,
305+ fullNameContainerProvider ('Smith' ),
297306 ],
298307 child: Builder (
299308 builder: (context) {
300309 final nameContainer = nameContainerProvider.of (context);
301310 final numberContainer1 = numberContainer1Provider.of (context);
302311 final numberContainer2 = numberContainer2Provider.of (context);
312+ final fullNameContainer = fullNameContainerProvider.of (context);
303313 return Text (
304- '''${nameContainer .name } ${numberContainer1 .number } ${numberContainer2 .number }''' ,
314+ '''${nameContainer .name } ${numberContainer1 .number } ${numberContainer2 .number } ${ fullNameContainer . name } ''' ,
305315 );
306316 },
307317 ),
308318 ),
309319 ),
310320 ),
311321 );
312- Finder providerFinder (String value1, int value2, int value3) =>
313- find.text ('$value1 $value2 $value3 ' );
322+ Finder providerFinder (
323+ String value1, int value2, int value3, String value4) =>
324+ find.text ('$value1 $value2 $value3 $value4 ' );
314325
315- expect (providerFinder ('Ale' , 1 , 100 ), findsOneWidget);
326+ expect (providerFinder ('Ale' , 1 , 100 , 'John Smith' ), findsOneWidget);
316327
317328 // mock NameProvider dispose method
318329 when (nameContainer.dispose ()).thenReturn (null );
330+ // Check that the dispose method in the provider with argument is not called
331+ expect (fullNameContainerProviderDisposed, false );
319332 // Push a different widget
320333 await tester.pumpWidget (Container ());
321334 // check dispose has been called on NameProvider
322335 verify (nameContainer.dispose ()).called (1 );
336+ // check that the dispose method in the provider with argument is called
337+ expect (fullNameContainerProviderDisposed, true );
323338 });
324339
325340 testWidgets ('Test ProviderScopePortal works' , (tester) async {
0 commit comments