android - 未处理的异常:'package:flutter/src/widgets/framework.dart':断言失败:'_debugCurrentBuildTarget == context':不正确
问题描述
在运行我的应用程序后,我尝试在我的颤振应用程序中实现“ bubble_bottom_bar ”,但我收到了这个我不知道的错误,并且在 Google 上我没有找到有用的东西。
错误信息:
E/flutter ( 4903): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: 'package:flutter/src/widgets/framework.dart': Failed
assertion: line 2624 pos 20: '_debugCurrentBuildTarget == context': is not true.
E/flutter ( 4903): #0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
E/flutter ( 4903): #1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
E/flutter ( 4903): #2 BuildOwner.buildScope.<anonymous closure>
(package:flutter/src/widgets/framework.dart:2624:20)
E/flutter ( 4903): #3 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2628:12)
E/flutter ( 4903): #4 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1086:13)
E/flutter ( 4903): #5 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:927:7)
E/flutter ( 4903): #6 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:908:7)
E/flutter ( 4903): #7 _rootRun (dart:async/zone.dart:1182:47)
E/flutter ( 4903): #8 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter ( 4903): #9 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter ( 4903): #10 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
E/flutter ( 4903): #11 _rootRun (dart:async/zone.dart:1190:13)
E/flutter ( 4903): #12 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter ( 4903): #13 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1021:23)
E/flutter ( 4903): #14 Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15)
timer_impl.dart:428:5) r_impl.dart:397:19)
E/flutter ( 4903): #17 _RawReceivePortImpl._handleMessage (dart:itimer_impl.dart:428:5)solate-patch/isolate_patch.dart:168:12) solate-patch/isolate_patch.dart:168:12)
E/flutter ( 4903):
I/OpenGLRenderer( 4903): Davey! duration=11820ms; Flags=1, IntendedVsync=313138546400, Vsync=313138546400, Olync=313138546400, Vsync=313138546400, OldestInputEvent=92233720368547531800, AnimationStart=313140549500, Per75807, NewestInputEvent=0, HandleInputStart=313140531800, AnimationSt00, SyncStart=324319140500, IssueDrawComart=313140549500, PerformTraversalsStart=313140579500, DrawStart=3243 DequeueBufferDuration=486425700, QueueB14567900, SyncQueued=324315324600, SyncStart=324319140500, IssueDrawCommandsStart=324319822700, SwapBuffers=324452499100, FrameCompleted=3oing too much work on its main thread.24962429000, DequeueBufferDuration=486425700, QueueBufferDuration=971800, GpuCompleted=0,
我使用 VS-Code 作为编辑器,使用 Android Studio 作为 Android 模拟器。两者都是最新的!Flutter 和 Dart 也是最新的。我尝试使用 Android 手机而不是模拟器 -> 相同的错误。
颤振医生:
$ flutter doctor -v
[√] Flutter (Channel beta, 1.23.0-18.1.pre, on Microsoft Windows [Version
10.0.18363.1198], locale de-DE)
• Flutter version 1.23.0-18.1.pre at C:\src\sdk\flutter
• Framework revision 198df796aa (4 weeks ago), 2020-10-15 12:04:33 -0700
• Engine revision 1d12d82d9c
• Dart version 2.11.0 (build 2.11.0-213.1.beta)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
• Android SDK at C:\Users\marce\AppData\Local\Android\sdk
• Platform android-30, build-tools 30.0.1
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
• All Android licenses accepted.
[√] Android Studio (version 4.0)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 48.0.2
• Dart plugin version 193.7361
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
[√] VS Code (version 1.51.0)
• VS Code at C:\Users\marce\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.16.0
[√] Connected device (1 available)
• sdk gphone x86 arm (mobile) • emulator-5554 • android-x86 • Android 11 (API 30)
(emulator)
• No issues found!
我的代码:
主要.dart
import 'package:flutter/material.dart';
import 'package:venora_tracker/pages/home.dart';
import 'package:venora_tracker/components/appScaffold.dart';
void main() => runApp(App());
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return AppScaffold(
home: HomePage(),
);
}
}
页面/home.dart
import 'package:flutter/material.dart';
//? COMPONENTS & LIB ITEMS
//? PACKAGES
import 'package:bubble_bottom_bar/bubble_bottom_bar.dart';
//? PAGES
import 'package:venora_tracker/pages/wallet.dart';
import 'package:venora_tracker/pages/eintraege.dart';
import 'package:venora_tracker/pages/konten.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
int currentIndex = 0;
void changePage(int index) {
setState(() {
currentIndex = index;
});
}
Widget callPage(int _selectedBar) {
switch (_selectedBar) {
case 0:
return HomePage();
case 1:
return WalletPage();
case 2:
return EintraegePage();
case 3:
return KontenPage();
break;
default:
return null;
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MoneyTracker'),
),
body: this.callPage(this.currentIndex),
floatingActionButton: FloatingActionButton(
onPressed: () {},
child: Icon(Icons.add),
backgroundColor: Colors.indigo,
),
floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
bottomNavigationBar: BubbleBottomBar(
opacity: .2,
currentIndex: currentIndex,
onTap: changePage,
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
elevation: 8,
fabLocation: BubbleBottomBarFabLocation.end, //new
hasNotch: true, //new
hasInk: true, //new, gives a cute ink effect
inkColor: Colors.black12, //optional, uses theme color if not specified
items: <BubbleBottomBarItem>[
BubbleBottomBarItem(
//Home
backgroundColor: Colors.indigo,
icon: Icon(
Icons.home,
color: Colors.black,
),
activeIcon: Icon(
Icons.home,
color: Colors.indigo,
),
title: Text("Start")),
BubbleBottomBarItem(
//Wallet
backgroundColor: Colors.green[800],
icon: Icon(
Icons.account_balance_wallet,
color: Colors.black,
),
activeIcon: Icon(
Icons.account_balance_wallet,
color: Colors.green[800],
),
title: Text("Wallet")),
BubbleBottomBarItem(
//Icon3
backgroundColor: Colors.deepOrange,
icon: Icon(
Icons.credit_card,
color: Colors.black,
),
activeIcon: Icon(
Icons.credit_card,
color: Colors.deepOrange,
),
title: Text("Konten")),
BubbleBottomBarItem(
//Icon 4
backgroundColor: Colors.deepPurple,
icon: Icon(
Icons.menu,
color: Colors.black,
),
activeIcon: Icon(
Icons.menu,
color: Colors.deepPurple,
),
title: Text("Einträge"))
],
),
);
}
}
组件/appSaffold.dart
import 'package:flutter/material.dart';
class AppScaffold extends StatelessWidget {
AppScaffold({this.home});
final Widget home;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MoneyTracker',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.indigo,
primaryColor: Colors.indigo,
secondaryHeaderColor: Colors.indigo,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: home,
);
}
}
解决方案
您可以在下面复制粘贴运行完整代码
在HomePage
您HomePage
再次调用时导致此错误
您可以创建一个新的Page1
并更改HomePage
为Page1
代码片段
Widget callPage(int _selectedBar) {
switch (_selectedBar) {
case 0:
return Page1();
...
class Page1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text("Page1"));
}
}
工作演示
完整代码
import 'package:bubble_bottom_bar/bubble_bottom_bar.dart';
import 'package:flutter/material.dart';
void main() => runApp(App());
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return AppScaffold(
home: HomePage(),
);
}
}
class AppScaffold extends StatelessWidget {
AppScaffold({this.home});
final Widget home;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MoneyTracker',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.indigo,
primaryColor: Colors.indigo,
secondaryHeaderColor: Colors.indigo,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: home,
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
int currentIndex = 0;
void changePage(int index) {
setState(() {
currentIndex = index;
});
}
Widget callPage(int _selectedBar) {
switch (_selectedBar) {
case 0:
return Page1();
case 1:
return WalletPage();
case 2:
return EintraegePage();
case 3:
return KontenPage();
break;
default:
return null;
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MoneyTracker'),
),
body: this.callPage(this.currentIndex),
floatingActionButton: FloatingActionButton(
onPressed: () {},
child: Icon(Icons.add),
backgroundColor: Colors.indigo,
),
floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
bottomNavigationBar: BubbleBottomBar(
opacity: .2,
currentIndex: currentIndex,
onTap: changePage,
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
elevation: 8,
fabLocation: BubbleBottomBarFabLocation.end, //new
hasNotch: true, //new
hasInk: true, //new, gives a cute ink effect
inkColor: Colors.black12, //optional, uses theme color if not specified
items: <BubbleBottomBarItem>[
BubbleBottomBarItem(
//Home
backgroundColor: Colors.indigo,
icon: Icon(
Icons.home,
color: Colors.black,
),
activeIcon: Icon(
Icons.home,
color: Colors.indigo,
),
title: Text("Start")),
BubbleBottomBarItem(
//Wallet
backgroundColor: Colors.green[800],
icon: Icon(
Icons.account_balance_wallet,
color: Colors.black,
),
activeIcon: Icon(
Icons.account_balance_wallet,
color: Colors.green[800],
),
title: Text("Wallet")),
BubbleBottomBarItem(
//Icon3
backgroundColor: Colors.deepOrange,
icon: Icon(
Icons.credit_card,
color: Colors.black,
),
activeIcon: Icon(
Icons.credit_card,
color: Colors.deepOrange,
),
title: Text("Konten")),
BubbleBottomBarItem(
//Icon 4
backgroundColor: Colors.deepPurple,
icon: Icon(
Icons.menu,
color: Colors.black,
),
activeIcon: Icon(
Icons.menu,
color: Colors.deepPurple,
),
title: Text("Einträge"))
],
),
);
}
}
class Page1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text("Page1"));
}
}
class WalletPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text("WalletPage"));
}
}
class EintraegePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text("EintraegePage"));
}
}
class KontenPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text("KontenPage"));
}
}
推荐阅读
- c# - 用于简单登录的 C# 中的参数化查询
- javascript - Angular:Http vs fetch api
- .net-core - EntityFramework Core database first, Scaffold-DbContext A positional parameter cannot be found that accept argument '--use-database-names' 错误
- excel - FileSystemObject - 无法打开保存在文件夹中的文件
- swift - 错误类型“MyClass”在“onTimer”上没有成员
- android - PayPal Android SDK 不适用于印度货币 INR
- bash - Bash:回显和复制结果
- vb.net - 需要用计时器错开蛇的身体部位
- koa - 如何在 KOA 中解析二进制数据(“multipart/form-data”)?
- python - 通过 tor 发出请求,requests.exceptions.ConnectionError Errno 61: Connection Refused