• Greg Spencer's avatar
    Add smoke tests for all the examples, fix 17 broken examples. (#89021) · ab2b0851
    Greg Spencer authored
    This adds a smoke test for every single API example. It also fixes 17 tests that had bugs in them, or were otherwise broken, and even fixes one actual bug in the framework, and one limitation in the framework.
    
    The bug in the framework is that NetworkImage's _loadAsync method had await response.drain<List<int>>();, but if the response is null, it will throw a cryptic exception saying that Null can't be assigned to List<int>. The fix was just to use await response.drain<void>(); instead.
    
    The limitation is that RelativePositionedTransition takes an Animation<Rect> rect parameter, and if you want to use a RectTween with it, the value emitted there is Rect?, and one of the examples was just casting from Animation<Rect> to Animation<Rect?>, which is invalid, so I modified RelativePositionedTransition to take a Rect? and just use Rect.zero if the rect is null.
    ab2b0851
Name
Last commit
Last update
..
flutterapp Loading commit data...
ios_add2app Loading commit data...
ios_add2app.xcodeproj Loading commit data...
ios_add2app.xcworkspace Loading commit data...
ios_add2appTests Loading commit data...
.gitignore Loading commit data...
Podfile Loading commit data...
README.md Loading commit data...
build_and_test.sh Loading commit data...

iOS Add2App Life Cycle Test

This application demonstrates some basic functionality for Add2App, along with a native iOS ViewController as a baseline and to demonstrate interaction.

The following functionality is currently implemented:

  1. A regular iOS view controller (UIViewController), similar to the default flutter create template (NativeViewController.m).
  2. A FlutterViewController subclass that takes over the full screen. Demos showing this both from a cold/fresh engine state and a warm engine state (FullScreenViewController.m).
  3. A demo of pushing a FlutterViewController on as a child view.
  4. A demo of showing both the native and the Flutter views using a platform channel to interact with each other (HybridViewController.m).
  5. A demo of showing two FlutterViewControllers simultaneously (DualViewController.m).

A few key things are tested here (IntegrationTests.m):

  1. The ability to pre-warm the engine and attach/detach a ViewController from it.
  2. The ability to use platform channels to communicate between views.
  3. The ability to simultaneously run two instances of the engine.
  4. That a FlutterViewController can be freed when no longer in use (also tested from FlutterViewControllerTests.m).
  5. That a FlutterEngine can be freed when no longer in use.