| _**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). |