• Adam Barth's avatar
    Convert dismissable_test.dart to ListView (#8078) · 749a09db
    Adam Barth authored
    This test was a bit tricky to convert because it subtly relied upon the
    lazy evaluation of an Iterable.
    
    The onDismissed from Dismissable happens during the animation phase of
    the pipeline. Previously, the ScrollableList had already been built for
    that frame but had not evaluated its Iterable yet. When we got to the
    layout phase, ScrollableList evaluated its Iterable and saw the updated
    version of dismissedItems.
    
    A straightforward conversion to ListView calls toList() when building
    the ListView, but that evaluates the iterable when buildTest() is
    called, which is before the calls to pump and therefore before the
    animation phase, meaning the Iterable sees the old value of
    dismissedItems.
    
    This patch fixes the test to use the normal setState pattern to signal
    that state upon which the build depends has changed. Now, the
    onDismissed callback happens during the animation phase and the
    StatefulBuilder is marked as dirty via setState, which causes it to
    rebuild the ListView and re-evaluate the Iterable, seeing the updated
    version of dismissedItems.
    
    This change also lets us replace the gratuious use of pumpWidget with
    pump now that we use setState rather than pumpWidget to trigger a
    rebuild.
    749a09db
dismissable_test.dart 12.7 KB