使用 Provider 时出现 Flutter 'No Overlay widget 位于 EditableText 之上'错误

Cer*_*ian 7 dart flutter flutter-provider

嘿,我有一个MultiProvider设置,它现在在点击 a 时抛出这个错误,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();
              }
            },
          );
        },
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 6

请原谅我的语言,我希望你能理解我写的内容。您需要包装从导航器中的构建器返回的每个小部件

Navigator(
      
        onGenerateRoute: (_) => MaterialPageRoute(
          builder: (ctx) => Scaffold(
            body: Stack(
              children: [
                Positioned.fill(
                    child: buildBody(
                        context.watch<AuthScopeViewModel>().screenType))
              ],
            ),
          ),
        ),
      );
Run Code Online (Sandbox Code Playgroud)

  • 您可以添加有关您的答案的更多详细信息。 (2认同)