如何解决嗨,有人可以向我解释为什么我必须在MyApp中构建一个构建器,以便可以使用mediaquery吗?
正如标题所述,我想知道如何在MyApp()或Firstpage()中实现它,所以我必须构建一个生成器,以便我的Mediaquery.of(context)可以工作,尽管在其他页面上也可以工作。我的问题是,因为我的其他页面在没有构建器的情况下仍然可以使用?
这是代码
MyApp() code
import 'package:flutter/material.dart';
import 'package:fluttertestpage/FirstpageUI.dart';
import 'package:fluttertestpage/secondpage.dart';
void main() {
runApp(FirstPage());
}
class FirstPage extends StatefulWidget {
@override
_FirstPageState createState() => _FirstPageState();
}
class _FirstPageState extends State<FirstPage> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(body: FirstPageUI().getFirstPageUIWidget()));
}
}
已连接的返回小部件
import 'package:flutter/material.dart';
import 'package:fluttertestpage/secondpage.dart';
class FirstPageUI {
Widget getFirstPageUIWidget() {
return Builder(
builder: (context) => (Container(
width: MediaQuery.of(context).size.width*.5,color: Colors.black,child: Center(
child: RaisedButton(
child: Text("1st -> 2nd"),onPressed: () {
Navigator.push(context,MaterialPageRoute(builder: (context) => SecondPage()));
},),)));
}
}
这是我的第二页,没有构建器
import 'package:flutter/material.dart';
import 'package:fluttertestpage/secondpageui.dart';
import 'package:fluttertestpage/thirdpage_0.dart';
import 'package:fluttertestpage/thirdpage_1.dart';
class SecondPage extends StatefulWidget {
@override
_SecondPageState createState() => _SecondPageState();
}
class _SecondPageState extends State<SecondPage> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SecondPageUI(context).getSecondPageUIWidget()
),);
}
}
返回第二页小部件
import 'package:flutter/material.dart';
import 'package:fluttertestpage/thirdpage_0.dart';
import 'package:fluttertestpage/thirdpage_1.dart';
class SecondPageUI {
SecondPageUI(this.context);
final BuildContext context;
Widget getSecondPageUIWidget() {
return Container(
color: Colors.white,child: Center(
child: Column(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width*.5,height: MediaQuery.of(context).size.height * .5,decoration: BoxDecoration(color: Colors.orangeAccent,RaisedButton(
child: Text("2nd -> 3rd0"),onPressed: () {
Navigator.push(
context,MaterialPageRoute(builder: (context) => ThirdPage_0()),);
},RaisedButton(
child: Text("2nd -> 3rd1"),MaterialPageRoute(builder: (context) => ThirdPage_1()),],)),);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。