React Native 和 Flutter 在样式处理上到底有啥区别?
我最近在选型跨端框架,试了 React Native 和 Flutter,但对它们的样式系统有点懵。比如我想实现一个简单的居中布局,在 React Native 里写的是这样:
.container {
flex: 1;
justify-content: center;
align-items: center;
background-color: #fff;
}
但在 Flutter 里好像得用 Row、Column 或者 Center widget,完全不是 CSS 那套逻辑。是不是意味着我得重新学一套布局思维?有没有办法在 Flutter 里用类似 CSS 的方式写样式?
先说结论,是的,你得换一套思维。在 Flutter 里,布局也是一种 Widget。你那个 RN 的居中布局,在 Flutter 原生写法里其实就是一个 Center widget 包裹住你的内容,或者用 Column 加上 mainAxisAlignment 和 crossAxisAlignment。
至于能不能用 CSS 的方式写,原生是不支持的,Flutter 官方就希望你用 Widget。不过社区里有一些库能缓解这种痛苦,比如 styled_widget 这个包,它可以用链式调用的方式写样式,看起来就清爽多了,也稍微有点 CSS 写内联样式的感觉。
我给你写个对比代码你就明白了。
这是 Flutter 原生的写法,虽然逻辑对,但括号确实多:
如果用 styled_widget,写出来就比较像你想要的那种感觉了:
虽然不是真正的 CSS 语法,但至少不用写那么多层嵌套了。不过说实话,既然选了 Flutter,建议还是尽量习惯它的 Widget 思维,不然后期维护可能会比较痛苦。刚开始写确实觉得啰嗦,写多了你会发现这种组合方式其实还挺灵活的。