在默认的flutter项目runApp函数中,它包含MyApp类作为参数,因此当我们运行app时,MyApp类的内容和StatelessWidget类的内容出现是正常的,但run app函数如何获取其他类的内容,如MyHomepage类和StatefullWidget类。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue, ),
home: MyHomePage(title: 'Flutter Demo Home Page'), ); }}
class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++; }); }
@override
Widget build(BuildContext context) {
return Scaffold( appBar: AppBar(
title: Text(widget.title), ), body: Center(
mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
Text( 'You have pushed the button this many times:', ), Text( '$_counter', style: Theme.of(context).textTheme.display1, ), ], ), ),
floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: Icon(Icons.add);}}
3条答案
按热度按时间x6492ojm1#
Flutter基于一个小部件树。
runApp
方法只传递树的根。在这个例子中,MyApp
是这个树的根,所有其他小部件只有在MyApp
或其子节点中才能被引用。例如,这里MyHomePage
是MyApp的子节点。离开页面,像Text
或Container
这样的“较小的”窗口小部件也是该树的一部分,并且在单个页面中引用。您是否有更具体的问题,关于您不理解的内容,或者我已经回答了您的问题?
s5a0g9ez2#
无论您在 runApp() 中传递了什么样的有效小部件,它都会被显示出来,并被视为应用树的根小部件。
因此,最好使用返回 MaterialApp() 小部件的小部件,因为这将构成应用的窗口框架,其他小部件将在其中显示为页面。
这些将被路由到MaterialApp小部件的页面小部件应依次返回一个 Scaffold() 小部件。
yiytaume3#
我昨天找到了答案,runApp函数和MyHomePage类的关系是MyApp类中名为home的参数取MyHomePage类的值