Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

cannot pass value from one class to another

I have two classes.First class consist of list from the firestore. I want to pass value from first class to second class. I did create a constructor in the second class to get the value from the first class but i am getting null value in second class. I want to pass value of snap[index][‘url’] to another class which has constructor url.

*first class*
Widget _html() {

  return Column(
    children: [
      const Text("\nWorship"),
      StreamBuilder<QuerySnapshot>(
        stream: FirebaseFirestore.instance.collection("Worship").snapshots(),
        builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
          if(snapshot.hasData) {
            final snap = snapshot.data!.docs;
            return ListView.builder(
              shrinkWrap: true,
              primary: false,
              itemCount: snap.length,
              itemBuilder: (context, index) {
                         return Stack(
                    children: [
                      GestureDetector(
                        child:Container(

                          height:50,
                      width: MediaQuery.of(context).size.width,


                      child: Card(
                        child: Center(
                          child: Row (
                            children : [
                                                 Text(

                          snap[index]['name'],
                          textAlign: TextAlign.start,
                          style: const TextStyle(
                            color: Colors.black54,
                            fontWeight: FontWeight.bold,
                          ),
                        ),
                            SizedBox(width:50),
                            Text(

                              snap[index]['title'],
                              textAlign: TextAlign.start,
                              style: const TextStyle(
                                color: Colors.black54,
                                fontWeight: FontWeight.bold,
                              ),
                            ),
                          ]


                        )),
                      )),
                        onTap: () {
                     var ur= snap[index]['url'];
                     print( ur );
                     **DashBoards(url: ur);**  //value to be passed


                        },

                      )
                      ],
                //   ),
                 );
              },
            );
          } else {
            return const SizedBox();
          }
        },
      )
    ],

  );

}

heres my second class

class DashBoards extends StatefulWidget {
  final String url;
  const DashBoards({Key? key,required this.url}) : super(key: key);

  @override
  _DashBoardsState createState() => _DashBoardsState(url);
}

class _DashBoardsState extends State<DashBoards> {
  late final String url;
  _DashBoardsState(url);


  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      //backgroundColor: Colors.white60,
        endDrawerEnableOpenDragGesture: false,
        appBar: AppBar(
          backgroundColor: Colors.green,
          ),
        body:   WebViewPlus (

      initialUrl: url,
    ),
       );
  }
}

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

You can access the value by using the widget.

Example:

///First Class
class FirstClass extends StatefulWidget {
  const FirstClass({Key? key}) : super(key: key);

  @override
  State<FirstClass> createState() => _FirstClassState();
}

class _FirstClassState extends State<FirstClass> {
  @override
  Widget build(BuildContext context) {
    return SecondClass(url: "https://www.google.com/");
  }
}

///Second class
class SecondClass extends StatefulWidget {
  final String url;
  const SecondClass({Key? key, required this.url}) : super(key: key);

  @override
  State<SecondClass> createState() => _SecondClassState();
}

class _SecondClassState extends State<SecondClass> {
  @override
  Widget build(BuildContext context) {
    ///Access the value by using widget
    return Text(widget.url);
  }
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading