[GH-ISSUE #1571] [Bug] type 'PhantomGroupItem' is not a subtype of type 'TicketItem' of 'value' #603

Closed
opened 2026-03-23 20:38:31 +00:00 by mirror · 3 comments
Owner

Originally created by @keanallen on GitHub (Dec 14, 2022).
Original GitHub issue: https://github.com/AppFlowy-IO/AppFlowy/issues/1571

Originally assigned to: @appflowy on GitHub.

Hi, when I drag a card to other group it will throw me an error:


[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'PhantomGroupItem' is not a subtype of type 'TicketItem' of 'value'
#0      List.add (dart:core-patch/growable_array.dart)
#1      AppFlowyGroupController.insert
package:appflowy_board//board_group/group_data.dart:118
#2      AppFlowyBoardController.insertPhantom
package:appflowy_board//widgets/board_data.dart:302
#3      BoardPhantomController._insertPhantom
package:appflowy_board//reorder_phantom/phantom_controller.dart:122
#4      BoardPhantomController.acceptNewDragTargetData
package:appflowy_board//reorder_phantom/phantom_controller.dart:164
#5      BoardPhantomController.dragTargetDidMoveToReorderFlex
package:appflowy_board//reorder_phantom/phantom_controller.dart:211
#6      OverlappingDragTargetInterceptor.onWillAccept.<anonymous closure>
package:appflowy_board//reorder_flex/drag_target_interceptor.dart:102
#7      Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15)
#8      _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19)
#9      _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5)
#10     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

This is how I add the group data from my controller:

  Future<void> displayStates() async {
    appFlowController.value.clear();
    await getAllStates();
    await getAllTickets();
    appFlowController.refresh();
    
    for (var item in allStates) {
      var ticketItems =
          allTickets.where((p0) => p0.state == item.objectId).toList();

      final state = AppFlowyGroupData(
          id: item.objectId,
          name: item.label,
          items: ticketItems.map((e) => TicketItem(e)).toList());
      
      appFlowController.value.addGroup(state);
    }

  }

And in my TicketItem


class TicketItem extends AppFlowyGroupItem {
  final Ticket ticket;

  TicketItem(this.ticket);
  @override
  String get id => ticket.objectId;
}
Originally created by @keanallen on GitHub (Dec 14, 2022). Original GitHub issue: https://github.com/AppFlowy-IO/AppFlowy/issues/1571 Originally assigned to: @appflowy on GitHub. Hi, when I drag a card to other group it will throw me an error: ```dart [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'PhantomGroupItem' is not a subtype of type 'TicketItem' of 'value' #0 List.add (dart:core-patch/growable_array.dart) #1 AppFlowyGroupController.insert package:appflowy_board/…/board_group/group_data.dart:118 #2 AppFlowyBoardController.insertPhantom package:appflowy_board/…/widgets/board_data.dart:302 #3 BoardPhantomController._insertPhantom package:appflowy_board/…/reorder_phantom/phantom_controller.dart:122 #4 BoardPhantomController.acceptNewDragTargetData package:appflowy_board/…/reorder_phantom/phantom_controller.dart:164 #5 BoardPhantomController.dragTargetDidMoveToReorderFlex package:appflowy_board/…/reorder_phantom/phantom_controller.dart:211 #6 OverlappingDragTargetInterceptor.onWillAccept.<anonymous closure> package:appflowy_board/…/reorder_flex/drag_target_interceptor.dart:102 #7 Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15) #8 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19) #9 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5) #10 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12) ``` This is how I add the group data from my controller: ```dart Future<void> displayStates() async { appFlowController.value.clear(); await getAllStates(); await getAllTickets(); appFlowController.refresh(); for (var item in allStates) { var ticketItems = allTickets.where((p0) => p0.state == item.objectId).toList(); final state = AppFlowyGroupData( id: item.objectId, name: item.label, items: ticketItems.map((e) => TicketItem(e)).toList()); appFlowController.value.addGroup(state); } } ``` And in my TicketItem ```dart class TicketItem extends AppFlowyGroupItem { final Ticket ticket; TicketItem(this.ticket); @override String get id => ticket.objectId; } ```
mirror 2026-03-23 20:38:31 +00:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@keanallen commented on GitHub (Dec 20, 2022):

any update on this? Thank you

<!-- gh-comment-id:1358972053 --> @keanallen commented on GitHub (Dec 20, 2022): any update on this? Thank you
Author
Owner

@Dev-Owl commented on GitHub (Jan 1, 2023):

@keanallen
If you change your code like below you should not get this error:

Future<void> displayStates() async {
    appFlowController.value.clear();
    await getAllStates();
    await getAllTickets();
    appFlowController.refresh();
    
    for (var item in allStates) {
      var ticketItems =
          allTickets.where((p0) => p0.state == item.objectId).toList();

      final state = AppFlowyGroupData(
          id: item.objectId,
          name: item.label,
          items: List<AppFlowyGroupItem>.from( ticketItems.map((e) => TicketItem(e)).toList()));
      
      appFlowController.value.addGroup(state);
    }

  }

The code change might be hard to see, it's the call to List<AppFlowyGroupItem>.from that did the trick. To be honest, I don't really understand why the error occurred, looks like the runtime gets confused with types...
For me, this happens on macOS.

<!-- gh-comment-id:1368479767 --> @Dev-Owl commented on GitHub (Jan 1, 2023): @keanallen If you change your code like below you should not get this error: ```dart Future<void> displayStates() async { appFlowController.value.clear(); await getAllStates(); await getAllTickets(); appFlowController.refresh(); for (var item in allStates) { var ticketItems = allTickets.where((p0) => p0.state == item.objectId).toList(); final state = AppFlowyGroupData( id: item.objectId, name: item.label, items: List<AppFlowyGroupItem>.from( ticketItems.map((e) => TicketItem(e)).toList())); appFlowController.value.addGroup(state); } } ``` The code change might be hard to see, it's the call to `List<AppFlowyGroupItem>.from` that did the trick. To be honest, I don't really understand why the error occurred, looks like the runtime gets confused with types... For me, this happens on macOS.
Author
Owner

@keanallen commented on GitHub (Jan 4, 2023):

@keanallen If you change your code like below you should not get this error:

Future<void> displayStates() async {
    appFlowController.value.clear();
    await getAllStates();
    await getAllTickets();
    appFlowController.refresh();
    
    for (var item in allStates) {
      var ticketItems =
          allTickets.where((p0) => p0.state == item.objectId).toList();

      final state = AppFlowyGroupData(
          id: item.objectId,
          name: item.label,
          items: List<AppFlowyGroupItem>.from( ticketItems.map((e) => TicketItem(e)).toList()));
      
      appFlowController.value.addGroup(state);
    }

  }

The code change might be hard to see, it's the call to List<AppFlowyGroupItem>.from that did the trick. To be honest, I don't really understand why the error occurred, looks like the runtime gets confused with types... For me, this happens on macOS.

I can confirm that it is now working when adding the code List<AppFlowyGroupItem>.from.

Thank you so much!

<!-- gh-comment-id:1371554980 --> @keanallen commented on GitHub (Jan 4, 2023): > @keanallen If you change your code like below you should not get this error: > > ```dart > Future<void> displayStates() async { > appFlowController.value.clear(); > await getAllStates(); > await getAllTickets(); > appFlowController.refresh(); > > for (var item in allStates) { > var ticketItems = > allTickets.where((p0) => p0.state == item.objectId).toList(); > > final state = AppFlowyGroupData( > id: item.objectId, > name: item.label, > items: List<AppFlowyGroupItem>.from( ticketItems.map((e) => TicketItem(e)).toList())); > > appFlowController.value.addGroup(state); > } > > } > ``` > > The code change might be hard to see, it's the call to `List<AppFlowyGroupItem>.from` that did the trick. To be honest, I don't really understand why the error occurred, looks like the runtime gets confused with types... For me, this happens on macOS. I can confirm that it is now working when adding the code ```List<AppFlowyGroupItem>.from```. Thank you so much!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AppFlowy-IO/AppFlowy#603
No description provided.