Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter MaterialApp生成器错误:未找到覆盖小部件_Flutter_Dart_Flutter Layout - Fatal编程技术网

Flutter MaterialApp生成器错误:未找到覆盖小部件

Flutter MaterialApp生成器错误:未找到覆盖小部件,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我在构建navigationDrawer时出错,tootlip小部件需要materialApp作为祖先 错误是这样说的: I/flutter ( 5780): _TooltipState#bc79e(ticker inactive)): I/flutter ( 5780): No Overlay widget found. I/flutter ( 5780): Tooltip widgets require an Overlay widget ancestor for correct opera

我在构建navigationDrawer时出错,tootlip小部件需要materialApp作为祖先

错误是这样说的:

I/flutter ( 5780): _TooltipState#bc79e(ticker inactive)):
I/flutter ( 5780): No Overlay widget found.
I/flutter ( 5780): Tooltip widgets require an Overlay widget ancestor for correct operation.
I/flutter ( 5780): The most common way to add an Overlay to an application is to include a MaterialApp or Navigator
I/flutter ( 5780): widget in the runApp() call.
I/flutter ( 5780): The specific widget that failed to find an overlay was:
I/flutter ( 5780):   Tooltip
I/flutter ( 5780): 
I/flutter ( 5780): The relevant error-causing widget was:
I/flutter ( 5780):   AppBar
我的main.dart代码

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      ... //basic info title & theme

      builder: (context, child) => LayoutTemplate(child: child),
      initialRoute:"/home",

      ... //Routing stuff like generate route & navigator key 
    );
  }
}
布局模板小部件

class LayoutTemplate extends StatelessWidget {
  final Widget child;

  const LayoutTemplate({Key key, this.child}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text("home"))
        drawer: NavDrawer()
        body: Column(
          children: <Widget>[
            //NavigationBar(),
            Expanded(
              child: child,
            )
          ],
       ),
    );
  }
}
class LayoutTemplate扩展了无状态小部件{
最后一个孩子;
const LayoutTemplate({Key-Key,this.child}):super(Key:Key);
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“主页”))
出票人:NavDrawer()
正文:专栏(
儿童:[
//导航栏(),
扩大(
孩子:孩子,
)
],
),
);
}
}
很抱歉添加了太多代码。我不确定是什么导致了这个问题。可能是
MaterialApp
中的
builder
导致了它


谢谢您的帮助。

我通过使用home而不是builder参数解决了这个问题

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      ... //basic info title & theme

      home: LayoutTemplate(child: child),
      initialRoute:"/home",

      ... //Routing stuff like generate route & navigator key 
    );
  }
}

相反,在每个路线中使用
LayoutTemplate
小部件:

类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
//…基本信息标题和主题
初始路由:“/home”,
路线:[
“/home”:(上下文)=>LayoutTemplate(子级:Text('home')),
//等其他路线
],
);
}
}

builder参数最适合用于“在
导航器
上方插入[widgets],或者-当使用
WidgetsApp.router
构造函数时-在
路由器
上方但在
WidgetsApp
小部件创建的其他小部件下方插入[widgets],或者完全替换
导航器
/
路由器
。”(文件)

例如,从传递给此方法的
BuildContext
中,
方向性
本地化
DefaultTextStyle
MediaQuery
,等等都是可用的。它们也可以以影响导航器或路由器中所有路由的方式被覆盖


(文件)

始终发布一个最小的可复制代码,我们可以在本地运行,我们如何知道您的
sl
NavigationService
sizingInformation
Routes.clientList
,等等。几乎每一行代码都使用项目中定义的字段,您没有共享。您差不多6岁了,所以st是一个最小的可复制代码,其他人可以运行。我已尝试删除不必要的代码。请检查更新的问题谢谢,您还可以修改initialRouteonGenerateRouteNavigatorWorkey?我遇到了一个与文本字段而不是工具提示非常类似的问题。您找到了解决方案吗?我想我们遵循相同的教程!使用生成器(…)是构建页面的有效方法,如果要将AppBar添加到在该生成器中创建的脚手架中,则不会失败。