flutter 类MyHomePage和runApp函数之间的关系是什么

dbf7pr2w  于 2023-01-09  发布在  Flutter
关注(0)|答案(3)|浏览(116)

在默认的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);}}
x6492ojm

x6492ojm1#

Flutter基于一个小部件树。runApp方法只传递树的根。在这个例子中,MyApp是这个树的根,所有其他小部件只有在MyApp或其子节点中才能被引用。例如,这里MyHomePage是MyApp的子节点。离开页面,像TextContainer这样的“较小的”窗口小部件也是该树的一部分,并且在单个页面中引用。
您是否有更具体的问题,关于您不理解的内容,或者我已经回答了您的问题?

s5a0g9ez

s5a0g9ez2#

无论您在 runApp() 中传递了什么样的有效小部件,它都会被显示出来,并被视为应用树的根小部件。
因此,最好使用返回 MaterialApp() 小部件的小部件,因为这将构成应用的窗口框架,其他小部件将在其中显示为页面。
这些将被路由到MaterialApp小部件的页面小部件应依次返回一个 Scaffold() 小部件。

yiytaume

yiytaume3#

我昨天找到了答案,runApp函数和MyHomePage类的关系是MyApp类中名为home的参数取MyHomePage类的值

相关问题