Flutter 环境安装
- 可以参考 Flutter 官网步骤进行安装搭建
实现效果如图

创建 Fluter 项目 flutter_dingtalk
- 创建 DTMainScreen 主布局,使用 PageView 加载显示和切换视图
- PageView 添加(DTMessageScreen、DTDocumentScreen、DTWorksetScreen、DTAddressListScreen、DTDiscoveryScreen)视图
- 列表页显示的信息放在 DTMessageScreen 中显示
创建 DTMainScreen,构建主要布局
- 添加对应视图
```dart
int _selectedIndex = 0;
List
_mainBodies = [];
PageController _mainPageController;
@override void initState() { _mainPageController = PageController(initialPage: _selectedIndex, keepPage: true);
_mainBodies ..add(DTMessageScreen()) ..add(DTDocumentScreen()) ..add(DTWorksetScreen()) ..add(DTAddressListScreen()) ..add(DTDiscoveryScreen()); super.initState(); }
….
PageView _buildPageView() { return PageView( children: _mainBodies, pageSnapping: false, physics: NeverScrollableScrollPhysics(), controller: _mainPageController, ); } ….
-重写 build 方法```dart@overrideWidget build(BuildContext context) {// 使用 ScreenUtil 进行屏幕适配ScreenUtil.init(context, width: 750, height: 1334);super.build(context);return Scaffold(// 加载显示 PageView 主题内容body: _buildPageView(),currentIndex: _selectedIndex,onTap: _onItemTapped,),);}
- 设置底部导航 bottomNavigationBar
// 设置底部导航bottomNavigationBar: BottomNavigationBar(selectedLabelStyle:TextStyle(color: kTabSelectedColor, fontSize: kSize22),unselectedLabelStyle:TextStyle(color: kTabNormalColor, fontSize: kSize22),type: BottomNavigationBarType.fixed,items: <BottomNavigationBarItem>[BottomNavigationBarItem(title: Text('消息'),icon: SvgPicture.asset('assets/icons/icon_message.svg',width: kSize48,color: _getBarItemColor(0),)),BottomNavigationBarItem(title: Text('文档'),icon: SvgPicture.asset('assets/icons/icon_document.svg',width: kSize48,color: _getBarItemColor(1),)),BottomNavigationBarItem(title: Text('工作'),icon: SvgPicture.asset('assets/icons/icon_workset.svg',width: kSize48,color: _getBarItemColor(2),)),BottomNavigationBarItem(title: Text('通讯录'),icon: SvgPicture.asset('assets/icons/icon_address_list.svg',width: kSize48,color: _getBarItemColor(3),)),BottomNavigationBarItem(title: Text('发现'),icon: SvgPicture.asset('assets/icons/icon_discovery.svg',width: kSize48,color: _getBarItemColor(4),)),],
代码地址: https://gitee.com/shizidada/flutter_dingtalk/blob/master/lib/ui/screens/main/main_screen.dart
