开始学习有些懵,于是想从基础开始学习flutter,这篇文章作为对一些基本函数和常用写法的总结归纳
参考了文章Flutter 开发(1)- 开发框架、流程、编译打包、调试
flutter的优势
- 热重载 快速
- dart 简洁
- 跨平台移动框架 一次编写 到处运行
- 好看
理念:一切皆为widget
material 组件
环境搭建
flutter,dart插件
1.程序入口,主页设计以及添加按钮控件
- 主函数:
void main()
-
runApp()
函数使用给定的Widget并使其成为Widget树的根,应该是需要传入一个Widget对象
比如:
void main(){
runApp(
new Center(
child: new Text(
'Hello, world!',
textDirection: TextDirection.ltr,
),
),
);
}
import 'package:flutter/material.dart';
void main() {
// 创建一个 MyApp
runApp(MyApp());
}
/// 这个 widget 作用这个应用的顶层 widget.
///
/// 这个 widget 是无状态的,所以我们继承的是 [StatelessWidget].
/// 对应的,有状态的 widget 可以继承 [StatefulWidget]
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 创建内容
}
}// 此种写法便于构建自己需要的app的整体widget
涉及的dart语法
- 可选的“尾随逗号”
因为Flutter代码通常涉及构建相当深的树状数据结构,为了获得良好的自动格式化,建议在函数的参数列表末尾采用可选的尾部逗号。 - widget树由两个widget: Center 和 Text组成
3.将widget作为参数传递给其他widget
2.使用material组件
使用material组件->Material应用程序以MaterialApp widget开始
Scaffold 是Material中主要的布局组件,可以在这个组件下创建些widget,比如:
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
title: 'Flutter Tutorial',
home: new TutorialHome(),
));
}
class TutorialHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
//Scaffold是Material中主要的布局组件.
return new Scaffold(
appBar: new AppBar(
leading: new IconButton(
icon: new Icon(Icons.menu),
tooltip: 'Navigation menu',
onPressed: null,
),
title: new Text('Example title'),
actions: <Widget>[
new IconButton(
icon: new Icon(Icons.search),
tooltip: 'Search',
onPressed: null,
),
],
),
//body占屏幕的大部分
body: new Center(
child: new Text('Hello, world!'),
),
floatingActionButton: new FloatingActionButton(
tooltip: 'Add', // used by assistive technologies
child: new Icon(Icons.add),
onPressed: null,
),
);
}
}
3.添加一个组件,以button为例
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget{
@over
}
无状态widget
无状态widget从它们的父widget接收参数, 它们被存储在final型的成员变量中。 当一个widget被要求构建时,它使用这些存储的值作为参数来构建widget。
有状态widget
它知道如何生成State对象,然后用它来保持状态