Closed vycius closed 3 years ago
First thank you very much for great library.
There is a bug where majority of the fab becomes unclickable after adding a label.
Bug video
fab-with-label-bug.mp4
Code to reproduce:
The following code is copped from the example, just label has been uncommented.
import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart'; void main() => runApp(MaterialApp(home: MyApp(), title: 'Flutter Speed Dial Example')); class MyApp extends StatefulWidget { @override MyAppState createState() => MyAppState(); } class MyAppState extends State<MyApp> with TickerProviderStateMixin { ScrollController scrollController; bool dialVisible = true; @override void initState() { super.initState(); scrollController = ScrollController() ..addListener(() { setDialVisible(scrollController.position.userScrollDirection == ScrollDirection.forward); }); } void setDialVisible(bool value) { setState(() { dialVisible = value; }); } Widget buildBody() { return ListView.builder( controller: scrollController, itemCount: 30, itemBuilder: (ctx, i) => ListTile( title: Text('Item $i'), onTap: () => print('Item $i'), ), ); } Widget buildSpeedDial() { return SpeedDial( /// both default to 16 marginEnd: 18, marginBottom: 20, // animatedIcon: AnimatedIcons.menu_close, // animatedIconTheme: IconThemeData(size: 22.0), /// This is ignored if animatedIcon is non null icon: Icons.add, activeIcon: Icons.remove, // iconTheme: IconThemeData(color: Colors.grey[50], size: 30), /// The label of the main button. label: Text("Open Speed Dial"), /// The active label of the main button, Defaults to label if not specified. // activeLabel: Text("Close Speed Dial"), /// Transition Builder between label and activeLabel, defaults to FadeTransition. // labelTransitionBuilder: (widget, animation) => ScaleTransition(scale: animation,child: widget), /// The below button size defaults to 56 itself, its the FAB size + It also affects relative padding and other elements buttonSize: 56.0, visible: true, /// If true user is forced to close dial manually /// by tapping main button and overlay is not rendered. closeManually: false, curve: Curves.bounceIn, overlayColor: Colors.black, overlayOpacity: 0.5, onOpen: () => print('OPENING DIAL'), onClose: () => print('DIAL CLOSED'), tooltip: 'Speed Dial', heroTag: 'speed-dial-hero-tag', backgroundColor: Colors.white, foregroundColor: Colors.black, elevation: 8.0, shape: CircleBorder(), // orientation: SpeedDialOrientation.Up, // childMarginBottom: 2, // childMarginTop: 2, children: [ SpeedDialChild( child: Icon(Icons.accessibility), backgroundColor: Colors.red, label: 'First', labelStyle: TextStyle(fontSize: 18.0), onTap: () => print('FIRST CHILD'), onLongPress: () => print('FIRST CHILD LONG PRESS'), ), SpeedDialChild( child: Icon(Icons.brush), backgroundColor: Colors.blue, label: 'Second', labelStyle: TextStyle(fontSize: 18.0), onTap: () => print('SECOND CHILD'), onLongPress: () => print('SECOND CHILD LONG PRESS'), ), SpeedDialChild( child: Icon(Icons.keyboard_voice), backgroundColor: Colors.green, label: 'Third', labelStyle: TextStyle(fontSize: 18.0), onTap: () => print('THIRD CHILD'), onLongPress: () => print('THIRD CHILD LONG PRESS'), ), ], ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Flutter Speed Dial')), body: buildBody(), floatingActionButton: buildSpeedDial(), ); } }
Expected behaviour
I would expect fab to be fully clickable even with label.
Route cause
This is caused by the setting Container width and height to static value of 56 https://github.com/darioielardi/flutter_speed_dial/blob/master/lib/src/speed_dial.dart#L425
By removing the check and always returning stack, label becomes clickable and starts working as expected. Although such fix would make the following issue appear again #61
Oh thanks for pointing out
Could you test it out now please..!
Yes. It works perfectly now.
First thank you very much for great library.
There is a bug where majority of the fab becomes unclickable after adding a label.
Bug video
https://user-images.githubusercontent.com/3719141/108561503-09202900-7307-11eb-8408-dd36b9743aff.mp4
Code to reproduce:
The following code is copped from the example, just label has been uncommented.
Expected behaviour
I would expect fab to be fully clickable even with label.
Route cause
This is caused by the setting Container width and height to static value of 56 https://github.com/darioielardi/flutter_speed_dial/blob/master/lib/src/speed_dial.dart#L425
By removing the check and always returning stack, label becomes clickable and starts working as expected. Although such fix would make the following issue appear again https://github.com/darioielardi/flutter_speed_dial/pull/61