Flutter 使用 Provider 时出现“EditableText 上方不存在覆盖小部件”错误
Posted
技术标签:
【中文标题】Flutter 使用 Provider 时出现“EditableText 上方不存在覆盖小部件”错误【英文标题】:Flutter 'No Overlay widget exists above EditableText' error when using Provider 【发布时间】:2020-11-16 22:30:41 【问题描述】:嘿,我有一个 MultiProvider
设置,现在在点击 TextField
时会抛出此错误,而在我实现多提供程序之前它没有:
No Overlay widget exists above EditableText
错误文本没有给出任何有用的指示,说明代码中的问题是什么,这里是代码:
import 'package:***_mobile/Providers/user_auth_provider.dart';
import 'package:***_mobile/screens/browsing_page.dart';
import 'package:***_mobile/screens/film_details_page.dart';
import 'package:***_mobile/screens/login_screen.dart';
import 'package:***_mobile/screens/venue_details_page.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main()
runApp(***());
class *** extends StatelessWidget
@override
Widget build(BuildContext context)
return ChangeNotifierProvider(
create: (_) => UserRepository.instance(),
child: Consumer(
builder: (context, UserRepository user, _)
return MaterialApp(
title: 'Flutter Demo',
routes:
'/browsing': (ctx) => BrowsingPage(),
'/venueDetails': (ctx) => VenueDetailPage(),
'/filmDetails': (ctx) => FilmDetailPage(),
'/login': (ctx) => LoginPage()
,
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
builder: (ctx, _)
switch (user.status)
case Status.Uninitialized:
return LoginPage();
case Status.Unauthenticated:
return LoginPage();
case Status.Authenticating:
return LoginPage();
case Status.Authenticated:
return BrowsingPage();
default:
return LoginPage();
,
);
,
),
);
【问题讨论】:
【参考方案1】:请原谅我的语言,我希望你能明白我写的是什么。 您需要包装从导航器中的构建器返回的每个小部件
Navigator(
onGenerateRoute: (_) => MaterialPageRoute(
builder: (ctx) => Scaffold(
body: Stack(
children: [
Positioned.fill(
child: buildBody(
context.watch<AuthScopeViewModel>().screenType))
],
),
),
),
);
【讨论】:
您可以添加更多关于您的答案的详细信息。 这对我有用。当相关小部件上方没有导航器时,似乎会出现此错误。例如使用builder
参数的 MaterialApp,没有包含子树的导航器。以上是关于Flutter 使用 Provider 时出现“EditableText 上方不存在覆盖小部件”错误的主要内容,如果未能解决你的问题,请参考以下文章
构建 Gradle 时出现问题(无法创建任务 ':path_provider_android:generateDebugUnitTestConfig')。在颤振中为 android
添加种子数据时出现以下错误::'No database provider has been configured for this DbContext
使用Maven时出现“jssecacerts PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilde”错