skip to Main Content

I use NavigationRail & NavigationBar in my project. When I try to read the label of one of the designations attached to NavigationRail, I get Text("Text") instead of "Text".

Here is an example code:

onDestinationSelected: (value) {
  context.goNamed(destinations[value].label.toString()); // output is "Text("Text")"
},

Is this an issue?

I tried same logic on NavigationBar and it works fine.

destinations[value].label.toString(); // Output is "Text"

2

Answers


  1. You need to cast the label as a Text widget before accessing its data.
    Here’s how you can do it:

    onDestinationSelected: (value) {
      context.goNamed((destinations[value].label as Text).data!);
    }
    

    The label property is a Text widget, not a String, so casting it first allows you to access the text content.

    Login or Signup to reply.
  2. To resolve this, you need to access the actual text content within the label property. Here’s how you can do it:

    onDestinationSelected: (value) {
    context.goNamed(destinations[value].label.data.first.toString()); // Access the first text node
    },

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search