我不知道为什么它对您不起作用。这是我根据您的描述构建的完整示例。有用!
import 'package:flutter/material.dart';import 'package:provider/provider.dart';class Profile with ChangeNotifier { bool _isAuthentificated = false; bool get isAuthentificated { return this._isAuthentificated; } set isAuthentificated(bool newVal) { this._isAuthentificated = newVal; this.notifyListeners(); }}void main() { return runApp( MultiProvider( providers: [ ChangeNotifierProvider<Profile>( create: (final BuildContext context) { return Profile(); }, ) ], child: MyApp(), ), );}class MyApp extends StatelessWidget { @override Widget build(final BuildContext context) { return Consumer<Profile>( builder: (final BuildContext context, final Profile profile, final Widget child) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData(primarySwatch: Colors.blue), home: profile.isAuthentificated ? MyHomePage() : MyLoginPage(), ); }, ); }}class MyHomePage extends StatelessWidget { @override Widget build(final BuildContext context) { return Scaffold( appBar: AppBar(title: const Text("Home [Auth Protected]")), body: Center( child: RaisedButton( child: const Text("Logout"), onPressed: () { final Profile profile = Provider.of<Profile>(context, listen: false); profile.isAuthentificated = false; }, ), ), ); }}class MyLoginPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text("Login")), body: Center( child: RaisedButton( child: const Text("Login"), onPressed: () { final Profile profile = Provider.of<Profile>(context, listen: false); profile.isAuthentificated = true; }, ), ), ); }}


