| _**Everything in this doc and linked from this doc is experimental. These details WILL change. Do not use these instructions or APIs in production code because we will break you.**_ |
| |
| # Add Flutter as a Fragment in a ViewPager |
| |
| Tabbed navigation often expects the presence of a `ViewPager`, such that the user can swipe left/right to navigate between tabbed pages. This guide shows you how to integrate Flutter as one or more of the pages in your `ViewPager`. |
| |
| Start by implementing standard tabbed navigation in Android with a `ViewPager`. Consider following [this guide](https://developer.android.com/training/implementing-navigation/lateral). |
| |
| Next, alter your `FragmentPagerAdapter` to return a `FlutterFragment` for the desired page(s). |
| |
| ```java |
| /** |
| * A {@link FragmentPagerAdapter} that returns a fragment corresponding to |
| * one of the sections/tabs/pages. |
| */ |
| public class SectionsPagerAdapter extends FragmentPagerAdapter { |
| |
| public SectionsPagerAdapter(FragmentManager fm) { |
| super(fm); |
| } |
| |
| @Override |
| public Fragment getItem(int position) { |
| if (position == FLUTTER_PAGE_INDEX) { |
| // In this case we construct a FlutterFragment that will run |
| // our main() method in Dart and start with an initial route of "/". |
| return new FlutterFragment.createDefault(); |
| } else { |
| // return some other page's Fragment |
| } |
| } |
| |
| @Override |
| public int getCount() { |
| // You need to define PAGE_COUNT |
| return PAGE_COUNT; |
| } |
| } |
| ``` |
| |
| You should now have a Flutter UI as one or more pages within your tabbed navigation. |
| |
| You may notice a delay between creation of your `FlutterFragment` and the display of your Flutter UI. This delay is caused by the warm-up time for the `FlutterEngine`. This warm-up issue a standard concern that applies to all uses of Flutter, including `FlutterActivity`. The way to minimize this visual delay is to use pre-warmed `FlutterEngine`s. Please see [the page about pre-warming FlutterEngines](Experimental-Reuse-FlutterEngine-across-screens.md). |