navigator.pushandremoveuntil 工作正常,但抛出异常:此语句是从扩展 ChangeNotifier(提供程序)的类执行的。
在完成小部件树时抛出以下断言:查找已停用小部件的祖先是不安全的。
此时小部件的元素树的状态不再稳定。
要在 widget 的 dispose() 方法中安全地引用它的祖先,请通过在 widget 的 didChangeDependency() 方法中调用 dependentOnInheritedWidgetOfExactType() 来保存对祖先的引用。
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (_) {return EmailAuthVC();}), (Route<dynamic> route) => false);
Run Code Online (Sandbox Code Playgroud) image pubspec
我想设置Noir Pro为我的Flutter应用程序的默认字体系列。
默认 Roboto fontFamily 更改为 NoirPro,但字体粗细e.g(.w400,w500,w600)无法正常工作。我找不到任何其他在线帮助。这让我很沮丧
在 pubspec.yaml
fonts:
- family: NoirPro
fonts:
- asset: resources/fonts/NoirPro_Light.ttf
weight: 300
- asset: resources/fonts/NoirPro_Normal.ttf
weight: 400
- asset: resources/fonts/NoirPro_Medium.ttf
weight: 500
- asset: resources/fonts/NoirPro_Bold.ttf
weight: 700
- asset: resources/fonts/NoirPro_Heavy.ttf
weight: 800
Run Code Online (Sandbox Code Playgroud)
In main.dart
theme: ThemeData(
fontFamily: 'NoirPro',
canvasColor: Colors.white,
),
Run Code Online (Sandbox Code Playgroud) 我正在尝试在课堂上创建一个多提供者。但它的工作方式与在 Material 应用程序上方的 main.dart 中声明多重提供程序不同。
class Chat extends StatelessWidget {
const Chat({ Key? key }) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<ChatProvider>( create: (context) => ChatProvider()),
ChangeNotifierProvider<MessageProvider>( create: (context) => MessageProvider()),
],
child: ChatMainScreen(),
// MaterialApp(
// debugShowCheckedModeBanner: false,
// home: ChatMainScreen(),
// )
);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在从 ChatMainScreen 导航到另一个屏幕到出现此问题的新屏幕(ChatRoom)。(ChatMainScreen => ChatRoom)
如果我用另一个材质应用程序包装我的 ChatMainScreen ,它似乎可以工作。但是在一个材料应用程序中再有另一个材料应用程序可以吗?
此外,材质应用程序父级到 ChatMainScreen 的路由返回无法正常工作。如果我从 ChatRoom 屏幕按后退按钮,它不会弹出回 chatMainScreen,而是弹出到我推送到 ChatMainScreen 的屏幕上