flutter - 嗨,有人可以向我解释为什么我必须在 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"),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ThirdPage_1()),
);
},
),
],
)),
);
}
}
解决方案
推荐阅读
- excel - Excel - 对于真正的单元格查找日期并确定最大值
- visual-studio-code - VSCode 搜索 - 关闭活动结果而不关注下一个结果
- html - 如何制作一个使用引导程序或纯 HTML 选择整行的两行表
- node.js - Node.js 将文件写为 latin1
- html - 带有CSS的DIV中的flexbox中无法解释的空间?
- python - discord.py 中的自动角色功能问题
- java - Spring Boot 单元测试断言错误 JSON 对象得到一个 JSON 数组
- java - NOT IN 基于多列?
- python - Python:在循环中创建对象会产生具有相同引用的对象
- excel - 使用 vba 加密 excel 工作簿