美文网首页
Flutter 初体验

Flutter 初体验

作者: Bison | 来源:发表于2019-06-19 17:11 被阅读0次

    Flutter的横空出世,很大程度上降低了移动应用的开发成本;我是一名苦逼的iOS开发者,兼职写点Android开发,对Flutter的出现比一般人要敏感很多,在此之前个人的看法是跨平台没什么前景,学习成本高的同时,性能并不是很满意;在接触Flutter之后,这一想法抛之脑后,瞬间来了兴趣,对于有开发经验的童鞋来说,学习起来一点也不难,特别是Android开发的,因为编译器可以直接用Android Studio,上手特别快;运行起来也很流畅;这些都是爱好的开始;

    首先来说一下iOS里面的UITabBarController 在Flutter里面有对应的控件BottomNavigationBar非常的方便,几句代码轻轻松松达到iOS和Android双端效果统一,主要代码如下

    import 'package:flutter/cupertino.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter_app/pages/HomePage.dart';
    import 'package:flutter_app/pages/ShopPage.dart';
    import 'package:flutter_app/pages/MyInfoPage.dart';
    
    
    class Tabbar extends StatefulWidget{
      @override
      State<StatefulWidget> createState() => TabbarState();
    }
    ///tabbar的三个子控制器
    class TabbarState extends State<Tabbar> {
      int _currentIndex = 0;
      final List<Widget> _children = [
        HomePage(),
        Shoppage(),
        MyInfoPage()
      ];
    
    //创建BottomNavigationBar并且监听改变的currentIndex
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          body: _children[_currentIndex],
          bottomNavigationBar: BottomNavigationBar(
            currentIndex: _currentIndex,
            onTap: onTabTapped,
            items: [
              BottomNavigationBarItem(
                  title: new Text("Home"), icon: new Icon(Icons.home)),
              BottomNavigationBarItem(
                  title: new Text("List"), icon: new Icon(Icons.list)),
              BottomNavigationBarItem(
                  title: new Text("Message"), icon: new Icon(Icons.message)),
            ],
          ),
        );
      }
    //点击事件
      void onTabTapped(int index) {
        setState(() {
          _currentIndex = index;
        });
      }
    }
    
    

    Tabbar 是自己创建封装的类,方便组件化管理;主要是实现tabbar的功能cupertino.dartmaterial.dart是Flutter自带的文件;其他HomePage.dart/ShopPage.dart/MyInfoPage.dart为自己创建的三个类,相当于iOS里面的VC和Android里面的Activity用于展示TabbarItem的内容;至于怎么调用就更加的简单了,下面是Main文件调用的代码:

    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          //调用tabbar展示
          home: Tabbar(),
        );
      }
    }
    

    调用的代码home: Tabbar(),就是这么简单粗暴,核心代码不超过50行; 效果图如下

    iOS效果 Android效果

    上图中填充的其他内容想了解的可以关注我哦, 连载中。。。

    相关文章

      网友评论

          本文标题:Flutter 初体验

          本文链接:https://www.haomeiwen.com/subject/cqakqctx.html