Lea*_*ous 11 dart android-studio material-ui flutter
在这里,我附上了我的代码,我创建了一个 listview.builder 以在带有 axis.horizontal 的容器中显示 4 个提升的按钮。因此,当我单击容器时,它将路由到另一个页面,此外,我还创建了一个列表来将数据从列表检索到每个容器。单击该按钮时,它在弹出新屏幕后起作用,然后再次单击它不起作用。显示如下。断言失败:第 4429 行第 12 行:'!_debugLocked':不是 true。。请有人帮忙完成事情。对4429线路进行了多次尝试,但无法得到正确的解决方案。
MaterialPageRoute(builder: (_) => const Hotels()),
MaterialPageRoute(builder: (_) => const Images()),
MaterialPageRoute(builder: (_) => const Transport()),
MaterialPageRoute(builder: (_) => const Travel()),
];
Run Code Online (Sandbox Code Playgroud)
import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:organization_travel_app/constants.dart';
class MainPage extends StatefulWidget {
const MainPage({Key key}) : super(key: key);
@override
_MainPageState createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
final GlobalKey<ScaffoldState> _scaffoldKEy = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
double width = MediaQuery.of(context).size.width;
return SafeArea(
child: Scaffold(
key: _scaffoldKEy,
endDrawer: Drawer(
child: ListView(
children: [
DrawerHeader(
child: Container(
color: Colors.red,
),
),
const ListTile(
title: Text("Page1"),
),
],
),
),
body: Stack(
children: [
Padding(
padding: const EdgeInsets.all(15.0),
child: Column(
children:[Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children:[
Container(
height: 45.0,
width: 50.0,
decoration: const BoxDecoration(
image: DecorationImage(
image:AssetImage("assets/images/images2.png"),
fit: BoxFit.fill
),
color: Colors.black,
shape: BoxShape.circle,
),
),
IconButton(onPressed: () => _scaffoldKEy.currentState.openEndDrawer(),
icon: const Icon(
Icons.menu,
color: Colors.black,
size: 35,
),
),
],
),
const SizedBox(height: 50.0,),
Container(
height: 100.0,
width: width,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const[
Text("Discover", style: MyTextStyleBase.main,
),
Text("World with us!", style: MyTextStyleBase.secondary,
),
],
),
),
Container(
child: TextField(
textAlign: TextAlign.center,
decoration: InputDecoration(
suffixIcon: Icon(Icons.search),
hintText: "Search something...",
counterText: "Travelling Areas",
filled: true,
fillColor: Colors.black12,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(30.0),
borderSide: BorderSide.none,
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(30.0),
borderSide: BorderSide.none,
),
),
),
),
SizedBox(height: 20.0,),
Container(
child: SingleChildScrollView(
child: Column(
children: [
SizedBox(
height: 100.0,
width: width,
child: ListView.builder(
itemCount: 4,
scrollDirection: Axis.horizontal,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: ElevatedButton(
onPressed: (){
Navigator.of(context).push(myRoute[index]);
},
style: ElevatedButton.styleFrom(
primary: Colors.redAccent,
fixedSize: Size(80, 10),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18),
),
),
child: Center(
child: Icon(icons[index])
),
),
);
},
),
),
],
),
),
),
],
),
),
],
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
从运行
======== Exception caught by gesture ===============================================================
The following assertion was thrown while handling a gesture:
'package:flutter/src/widgets/navigator.dart': Failed assertion: line 4429 pos 12: '!_debugLocked': is not true.
Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.md
When the exception was thrown, this was the stack:
#2 NavigatorState._pushEntry (package:flutter/src/widgets/navigator.dart:4429:12)
#3 NavigatorState.push (package:flutter/src/widgets/navigator.dart:4366:5)
#4 _MainPageState.build.<anonymous closure>.<anonymous closure> (package:organization_travel_app/mainpage.dart:118:61)
#5 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989:21)
#6 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:198:24)
#7 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608:11)
#8 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)
#9 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:267:7)
#10 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
#11 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:443:20)
#12 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:419:22)
#13 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:322:11)
#14 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374:7)
#15 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338:5)
#16 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:296:7)
#17 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:279:7)
#21 _invoke1 (dart:ui/hooks.dart:170:10)
#22 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:331:7)
#23 _dispatchPointerDataPacket (dart:ui/hooks.dart:94:31)
(elided 5 frames from class _AssertionError and dart:async)
Handler: "onTap"
Recognizer: TapGestureRecognizer#2b9ed
debugOwner: GestureDetector
state: ready
won arena
finalPosition: Offset(65.1, 382.1)
finalLocalPosition: Offset(42.1, 32.1)
button: 1
sent tap down
==================================================================================================== ```
Run Code Online (Sandbox Code Playgroud)
小智 9
对于那些在构建过程中调用导航器的人。我发现它会间歇性地在 debugLocked 上抛出断言错误
我通过使用 addPostFrameCallback 来避免这个问题:
WidgetsBinding.instance.addPostFrameCallback((_) {
Navigator.pushReplacement(context, MaterialPageRoute(builder: (_) => MyPage()));
});
Run Code Online (Sandbox Code Playgroud)
所以问题是你推到一个新屏幕而不传入contextof 。builderMaterialPageRoute()
尝试重新设计路线列表的方法以允许builder通过。
如果您想要一个例子,请告诉我!
| 归档时间: |
|
| 查看次数: |
15936 次 |
| 最近记录: |