写给前端工程师的 Flutter 详细教程

floatingActionButton:FloatingActionButton()

);

}

}

大杀器:Collection If 和 Collection For

// collection If

Widget build(BuildContext context) {

return Row(

children: [

IconButton(icon: Icon(Icons.menu)),

Expanded(child: title),

if (!isAndroid)

IconButton(icon: Icon(Icons.search)),

],

);

}

// Collect For

var command = [

engineDartPath,

frontendServer,

for (var root in fileSystemRoots) “–filesystem-root=$root”,

for (var entryPoint in entryPoints)

if (fileExists(“lib/ e n t r y P o i n t . j s o n " ) ) " l i b / entryPoint.json")) "lib/ entryPoint.json"))"lib/entryPoint”,

mainPath

];

更多Dart 2.3对此的优化看这里

Flutter 怎么写


到这里终于到正题了,如果熟悉web前端,熟悉React的话,你会对下面要讲的异常的熟悉。

19956127-0be008226088680f.png

Flutter App的一切从 lib/main.dart文件的main函数开始:

import ‘package:flutter/material.dart’;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

title: ‘Welcome to Flutter’,

home: Scaffold(

appBar: AppBar(

title: Text(‘Welcome to Flutter’),

),

body: Center(

child: Text(‘Hello World’),

),

),

);

}

}

Dart 类build方法返回的便是Widget,在Flutter中一切都是Widget,包括但不限于

  • 结构性元素,menu,button等

  • 样式类元素,font,color等

  • 布局类元素,padding,margin等

  • 导航

  • 手势

Widget是Dart中特殊的类,通过实例化(Dart 中new是可选的)相互嵌套,你的这个App就是形如下图的一颗组件树(Dart入口函数的概念,main.dart -> main())。

19956127-edb841cf236c1aa7.png

Widget布局

上说过Flutter布局

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值