【问题标题】:How can I fix the error of "MediaQuery.of() called with a context that does not contain a MediaQuery."?如何修复“使用不包含 MediaQuery 的上下文调用 MediaQuery.of()”的错误?
【发布时间】:2020-07-26 14:39:51
【问题描述】:

我不知道为什么当我使用下面的“Tab”时会出现此错误。每当我尝试构建应用程序时 错误屏幕出来了。请告诉我如何解决它。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DefaultTabController(
      length: 3,
      child: Scaffold(
        appBar: AppBar(
          title: Text('Tab'),
          bottom: TabBar(
            tabs: <Widget>[
              Tab(icon: Icon(Icons.tag_faces),),
              Tab(text: 'menu',),
              Tab(icon: Icon(Icons.info),text: 'menu',),
            ],
          ),
        ),
        body: TabBarView(
          children: <Widget>[
            Container(color: Colors.purple,),
            Container(color: Colors.purple,),
            Container(color: Colors.purple,),
          ],
        ),
      ),
    );
  }
}

【问题讨论】:

  • 使用 MaterialApp 小部件作为小部件树的根。

标签: flutter dart


【解决方案1】:

您需要将 DefaultTabController 包装在 MaterialApp 中。如果您访问 Scaffold 类,那么您可以看到它需要 MediaQuery。 MediaQuery 在WidgetsApp 类中定义。由于 MaterialApp 继承自 WidgetsApp,因此包装我们的小部件树将允许 Scaffold 访问 MediaQuery 类。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DefaultTabController(
        length: 3,
        child: Scaffold(
          appBar: AppBar(
            title: Text('Tab'),
            bottom: TabBar(
              tabs: <Widget>[
                Tab(icon: Icon(Icons.tag_faces),),
                Tab(text: 'menu',),
                Tab(icon: Icon(Icons.info),text: 'menu',),
              ],
            ),
          ),
          body: TabBarView(
            children: <Widget>[
              Container(color: Colors.purple,),
              Container(color: Colors.purple,),
              Container(color: Colors.purple,),
            ],
          ),
        ),
      ),
    );
  }
}

【讨论】:

  • 效果很好!!非常感谢您的解释!!!
猜你喜欢
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 2020-11-22
  • 2020-07-27
  • 2020-02-17
相关资源
最近更新 更多