上一篇说了Container,流水的讲了Row和Column。这里来进一步的说下.
做过web的估计很好理解这个,因为这个和Web中Flex布局很像,但坑的是不带滚动属性,不像ScrollView。如果超出了一行,在debug下面则会显示溢出的提示。

这个顶部有三个控件,红黄蓝,通过设置flex来设置了占比。

 class MyAppBar extends StatelessWidget {
  MyAppBar({this.title});

  final Widget title;

  @override
  Widget build(BuildContext context) {
    return Container(
        height: 56.0, // in logical pixels

        decoration: BoxDecoration(color: Colors.blue[500]),
        // Row is a horizontal, linear layout.
        child: Row(
          children: <Widget>[
            Expanded(
              child: Container(
                color: Colors.red,
                padding: EdgeInsets.all(5.0),
              ),
              flex: 1,
            ),
            Expanded(
              child: Container(
                color: Colors.yellow,
                padding: EdgeInsets.all(5.0),
              ),
              flex: 2,
            ),
            Expanded(
              child: Container(
                color: Colors.blue,
                padding: EdgeInsets.all(5.0),
              ),
              flex: 1,
            ),
          ],
        )
    );
  }
}
Read more »

现在先简单的说下flutter对应的一些基本控件,界面绘制内容逻辑.

配合说明状态管理这个事情,Flutter分了有状态和无状态组件,做过React+Redux套装开发的应该看下面代码很熟悉

  • widget本身
  • 父widget
  • 另一个对象

想说下这个官方的简单demo,添加多个箱子,点击箱子,切换不同的显示效果
选中

没选中显示灰色背景

没选中显示灰色背景

Read more »

Flutter作为一门新的技术,他的潜力在被逐渐的证明,比RN和weex等更强大的跨平台能力
基于Dart语言,像web一样的增量更新,基于Hot Reload的秒编。再也不用担心像ANDROID那样,项目一庞大,编译耗时就上去了,接着就开始各种插件化,热更新等技术的研究。折腾人,我们都想有web那种线上发布的能力,快速上线,不用等用户投诉了再发一个版本。

个人认为以后完全有可能替代java这个东西,因为其不需要知道太多移动开发的经验,就可以新造出一个应用 。相比kotlin这个语法糖,还是更有实在的革命性之处。

同时也支持在现有的app上加入,混编。
目前在我们项目已经开始替代一些基础页面做线上验证了,实际效果不错,开发效率也最少提高1.5倍,最重要是真跨平台,编完ios也可以用。
不过实际体验下来,如果不合native过多的数据交互,还是很方便的,如果有太多的交互,数据转换等问题也挺啰嗦的。

然后一直需要容器和child的嵌套,一开始还是蛮不习惯的,没有像安卓的xml那样写完可以看到.
不过习惯了也就那样了。

对于像我这种有过web开发经历的同学来说,做这个还是挺熟悉的,一股React+Redux的味道。

总之整体还是很看到Flutter的未来发展,他是完全可以替代RN的新真生产力工具。

这个系列计划

后面打算按照像当年学习android开发一样,把基础控件先写一遍教程,再把几个项目过程中使用到的框架介绍下。最后做一个最简单的todoList的demo,完成一个从网络加载数据,显示的流程。