import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'tab_1.dart'; import 'tab_2.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.green, ), builder: (BuildContext context, Widget child) { return CupertinoTheme( data: CupertinoThemeData(), child: child, ); }, home: PlatformAdaptingHomePage(), ); } } class PlatformAdaptingHomePage extends StatefulWidget { PlatformAdaptingHomePage({ Key key }) : super(key: key); @override _PlatformAdaptingHomePageState createState() => _PlatformAdaptingHomePageState(); } class _PlatformAdaptingHomePageState extends State<PlatformAdaptingHomePage> { final tab1Key = GlobalKey(); final tab2Key = GlobalKey(); Widget _buildAndroidHomePage() { return Scaffold( appBar: AppBar(title: Text(tab1Title)), drawer: Drawer( ), body: Tab1(key: tab1Key), ); } Widget _buildIosHomePage() { return CupertinoTabScaffold( tabBar: CupertinoTabBar( items: <BottomNavigationBarItem>[ BottomNavigationBarItem( title: Text(tab1Title), icon: tab1IosIcon, ), BottomNavigationBarItem( title: Text(tab2Title), icon: tab2IosIcon, ), ], ), tabBuilder: (BuildContext context, int index) { switch (index) { case 0: return CupertinoTabView( defaultTitle: tab1Title, builder: (BuildContext context) { return Tab1(key: tab1Key); }, ); case 1: return CupertinoTabView( defaultTitle: tab2Title, builder: (BuildContext context) { return Tab2(key: tab2Key); }, ); } }, ); } @override Widget build(BuildContext context) { switch (defaultTargetPlatform) { case TargetPlatform.android: case TargetPlatform.fuchsia: return _buildAndroidHomePage(); case TargetPlatform.iOS: return _buildIosHomePage(); } assert(false, 'Unexpected platform'); return null; } }