flutter 是由dart作为开发语言的一套移动UI框架,可以在Android Ios上快速搭建原生项目,fultter是不支持反射的
创建flutter的时候会生成一个默认的界面,其中最开始的一部分都是一样的
main()方法是固定的 MaterialAPP代表这是一个App,Scaffold代表使用Android 的Material风格
StatefulWidget代码比较多 as为我们提供了模板代码使用stful可以快速创建
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '测试',
theme: ThemeData(
primarySwatch: Colors.deepOrange,
),
home: MyHomePage(),
);
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("测试"),
),
body: Center(
child: Text("Holle,flutter"),
),
);
}
}
flutter里面一切皆Widget,举个例子:
像这种Text就是一个集成StatelessWidget的Widget
flutter 有两个特殊的Widget那就是StatelessWidget和StatefulWidget
这连个有什么区别呢?
其实StatelessWidget和StatefulWidget就是一个没有状态改变和一个有状态改变的WIdget
如果细心的小伙伴会发现在StatefulWidget中会存在一下几个方法
class Ac extends StatefulWidget {
@override
_AcState createState() => _AcState();
}
class _AcState extends State<Ac> {
@override
Widget build(BuildContext context) {
return Container();
}
@override
void initState() {
super.initState();
}
@override
void setState(fn) {
super.setState(fn);
}
@override
void dispose() {
super.dispose();
}
}
那这些方法代表什么意思呢?
其实initState()表示初始化就像在Actvity会去初始化一些数据控件等。
setState()代表界面状态的刷新,当调用这个方法的时候系统会重新去调用build()方法
来实现界面的刷新
@override
Widget build(BuildContext context) {
return Container();
}
dispose()代表销毁 和Activity中的销毁方法是一样的效果,需要销毁的对象或数据都在这里销毁
flutter为我们提供了Android的Material和IOS的Cupertino两套风格,里面具体的Widget需要自己去写了以后就会慢慢了解