Flutter(五)常用部件-MaterialApp
到目前为止,我们使用的几个小部件都是在material.dart
中的,其实在它里边Flutter
还为我们封装了其他好用的组件;
MaterialApp
在Flutter
中,runApp
推荐返回一个MaterialApp
,那么我们来看一下它是个什么样的部件:
class MaterialApp extends StatefulWidget
我们从它的继承关系中可以看到,它继承自一个StatefulWidget
,这是一个有状态的Widget
,那么它有可能封装了一套方便我们使用的UI
效果;
我们将代码修改如下:
运行工程,显示效果:
比起之前的显示效果多了两行下划线和
debug
标识;
Scaffold
我们在使用MaterialApp
的时候,一般配合Scaffold
使用,而Scaffold
中含有AppBar
的定义:
我们编写如下代码:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Flutter 工程'),
),
),
);
}
}
直接运行项目,查看显示效果:
这个时候已经接近于我们常用的App
样式了;
那么我们如果将自定义的MyWidget
显示在界面上呢?我们查看一下Scaffold
除了appBar
是否还有其他属性?
我们发现Scaffold
还有一个body
属性,并且它也是一个Widget
:final Widget? body;
我们将自定义的
MyWidget
赋值给Scaffold
的body
属性试试看:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Flutter 工程'),
),
body: MyWidget(),
),
);
}
}
运行项目,查看效果:
自定义的
MyWidget
已经显示在界面上了,而且我们发现Center
部件并不是在屏幕正中间,而是基于它的父部件也就是body
居中的;
我们正常开发App
的过程中,一般情况下也是基于MaterialApp
来进行开发的;
Flutter小知识
debug标识
我们发现,在我们使用了MaterialApp
之后,在App
显示界面的右上角出现了一个debug
的标识,那么如何将其隐藏掉呢?
既然是跟随MaterialApp
这个部件出现的,那么在此部件内部是否有属性可以设置debug
标识的显示与否呢?
MaterialApp
中debugShowCheckedModeBanner
就是控制debug
标识的显示与隐藏的,我们将代码修改如下:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: const Text('Flutter 工程'),
),
body: MyWidget(),
),
);
}
}
运行查看效果:
转载自:https://juejin.cn/post/7026257018876854280