@@ -300,4 +300,137 @@ void main() {
300
300
expect (renderClip.clipBehavior, equals (Clip .antiAlias));
301
301
expect (renderClip.borderRadius, equals (BorderRadius .zero));
302
302
});
303
+
304
+ testWidgets ('Flexible widget' , (WidgetTester tester) async {
305
+ final Runtime runtime = Runtime ()
306
+ ..update (const LibraryName (< String > ['core' ]), createCoreWidgets ());
307
+ addTearDown (runtime.dispose);
308
+ final DynamicContent data = DynamicContent ();
309
+
310
+ // Test Flexible with default values
311
+ runtime.update (const LibraryName (< String > ['test' ]), parseLibraryFile ('''
312
+ import core;
313
+ widget root = Directionality(
314
+ textDirection: "ltr",
315
+ child: Column(
316
+ children: [
317
+ Flexible(
318
+ child: Text(text: "Default flexible"),
319
+ ),
320
+ ],
321
+ ),
322
+ );
323
+ ''' ));
324
+
325
+ await tester.pumpWidget (
326
+ RemoteWidget (
327
+ runtime: runtime,
328
+ data: data,
329
+ widget: const FullyQualifiedWidgetName (LibraryName (< String > ['test' ]), 'root' ),
330
+ ),
331
+ );
332
+ await tester.pump ();
333
+ expect (find.byType (Flexible ), findsOneWidget);
334
+ final Flexible defaultFlexible = tester.widget <Flexible >(find.byType (Flexible ));
335
+ expect (defaultFlexible.flex, equals (1 ));
336
+ expect (defaultFlexible.fit, equals (FlexFit .loose));
337
+
338
+ // Test Flexible with custom flex value
339
+ runtime.update (const LibraryName (< String > ['test' ]), parseLibraryFile ('''
340
+ import core;
341
+ widget root = Directionality(
342
+ textDirection: "ltr",
343
+ child: Column(
344
+ children: [
345
+ Flexible(
346
+ flex: 3,
347
+ child: Text(text: "Custom flex"),
348
+ ),
349
+ ],
350
+ ),
351
+ );
352
+ ''' ));
353
+ await tester.pumpAndSettle ();
354
+ final Flexible customFlexFlexible = tester.widget <Flexible >(find.byType (Flexible ));
355
+ expect (customFlexFlexible.flex, equals (3 ));
356
+ expect (customFlexFlexible.fit, equals (FlexFit .loose));
357
+
358
+ // Test Flexible with fit: "tight"
359
+ runtime.update (const LibraryName (< String > ['test' ]), parseLibraryFile ('''
360
+ import core;
361
+ widget root = Directionality(
362
+ textDirection: "ltr",
363
+ child: Column(
364
+ children: [
365
+ Flexible(
366
+ flex: 2,
367
+ fit: "tight",
368
+ child: Text(text: "Tight fit"),
369
+ ),
370
+ ],
371
+ ),
372
+ );
373
+ ''' ));
374
+ await tester.pumpAndSettle ();
375
+ final Flexible tightFlexible = tester.widget <Flexible >(find.byType (Flexible ));
376
+ expect (tightFlexible.flex, equals (2 ));
377
+ expect (tightFlexible.fit, equals (FlexFit .tight));
378
+
379
+ // Test Flexible with fit: "loose"
380
+ runtime.update (const LibraryName (< String > ['test' ]), parseLibraryFile ('''
381
+ import core;
382
+ widget root = Directionality(
383
+ textDirection: "ltr",
384
+ child: Column(
385
+ children: [
386
+ Flexible(
387
+ flex: 4,
388
+ fit: "loose",
389
+ child: Text(text: "Loose fit"),
390
+ ),
391
+ ],
392
+ ),
393
+ );
394
+ ''' ));
395
+ await tester.pumpAndSettle ();
396
+ final Flexible looseFlexible = tester.widget <Flexible >(find.byType (Flexible ));
397
+ expect (looseFlexible.flex, equals (4 ));
398
+ expect (looseFlexible.fit, equals (FlexFit .loose));
399
+
400
+ // Test multiple Flexible widgets in a Column
401
+ runtime.update (const LibraryName (< String > ['test' ]), parseLibraryFile ('''
402
+ import core;
403
+ widget root = Directionality(
404
+ textDirection: "ltr",
405
+ child: Column(
406
+ children: [
407
+ Flexible(
408
+ flex: 1,
409
+ fit: "loose",
410
+ child: Text(text: "First"),
411
+ ),
412
+ Flexible(
413
+ flex: 2,
414
+ fit: "tight",
415
+ child: Text(text: "Second"),
416
+ ),
417
+ Flexible(
418
+ flex: 1,
419
+ child: Text(text: "Third"),
420
+ ),
421
+ ],
422
+ ),
423
+ );
424
+ ''' ));
425
+ await tester.pumpAndSettle ();
426
+ expect (find.byType (Flexible ), findsNWidgets (3 ));
427
+
428
+ final List <Flexible > flexibleWidgets = tester.widgetList <Flexible >(find.byType (Flexible )).toList ();
429
+ expect (flexibleWidgets[0 ].flex, equals (1 ));
430
+ expect (flexibleWidgets[0 ].fit, equals (FlexFit .loose));
431
+ expect (flexibleWidgets[1 ].flex, equals (2 ));
432
+ expect (flexibleWidgets[1 ].fit, equals (FlexFit .tight));
433
+ expect (flexibleWidgets[2 ].flex, equals (1 ));
434
+ expect (flexibleWidgets[2 ].fit, equals (FlexFit .loose));
435
+ });
303
436
}
0 commit comments