skip to Main Content

is there a way to path this "model" from commentItem Widget to a Navigator that transmit me to another screen ?
like Navigator.push or Navigator.pushNamed ?
it will help me to display posts or comments in different screens like home screen it will display posts
as well as my profile screen it will display only my posts so i need to know how to path arguments to different screens by Navigator
how to perform this with code ?

Widget commentItem(CommentModel model, context,) => Column(
        mainAxisAlignment: MainAxisAlignment.start,
        children: [
          Row(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              CircleAvatar(
                radius: 22,
                backgroundImage: NetworkImage('${model.image}'),
              ),
              SizedBox(
                width: 15,
              ),
              Expanded(
                child: Column(
                  children: [
                    Container(
                      decoration: BoxDecoration(
                        borderRadius: BorderRadius.circular(10),
                        color: SocialCubit.get(context).iconChangeTheme? Colors.white70 : Colors.grey[350],
                      ),
                      child: Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Row(
                              children: [
                                Text(
                                  '${model.name}',
                                  style: TextStyle(
                                      fontSize: 15,
                                      fontWeight: FontWeight.bold,
                                    color: SocialCubit.get(context).iconChangeTheme? Colors.black : Colors.black
                                  ),
                                ),
                                SizedBox(
                                  width: 7,
                                ),
                                Text(
                                  '${model.dateTime}',
                                  style: TextStyle(
                                      fontSize: 11,
                                      color: SocialCubit.get(context).iconChangeTheme? Colors.black : Colors.black
                                  ),
                                ),
                              ],
                            ),
                            if(model.text != '')
                              SizedBox(
                                height: 5,
                              ),
                            Text('${model.text}'
                            ,style: TextStyle(
                                  color: SocialCubit.get(context).iconChangeTheme? Colors.black : Colors.black
                              ),),
                          ],
                        ),
                      ),
                    ),
                    if (model.commentImage != '')
                      Padding(
                        padding: const EdgeInsetsDirectional.only(top: 5),

                        child: Container(
                          height: 170,
                          //width: double.infinity,
                          alignment: Alignment.topLeft,
                          child: ClipRRect(
                            borderRadius: BorderRadius.circular(10),
                            child: Image(image: NetworkImage('${model.commentImage}'),
                                //fit: BoxFit.fill,
                                alignment: Alignment.topLeft),
                          ),
                        ),
                      ),
                  ],
                ),
              ),
            ],
          ),
        ],
      );
ListView.separated(
                                                  shrinkWrap: true,
                                                  physics: NeverScrollableScrollPhysics(),
                                                  itemBuilder: (context, index) => commentItem(SocialCubit.get(context).comments[index], context,),
                                                  separatorBuilder: (context, index) => SizedBox(height: 20),
                                                  itemCount: SocialCubit.get(context).comments.length),

2

Answers


  1. You can use the Navigator push as following:

    Navigator.of(context).push(MaterialPageRoute(builder: (context) => NewScreenForPosts(
    postCode: postCode,
    week: week,
    postName: postName
    )));
    

    Your class will look like following:

    class NewScreenForPosts extends StatelessWidget {
      final postCode;
      final week;
      final postName;
    
      const NewScreenForPosts({Key? key, required this.postCode, required this.week, required this.postName}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return const Placeholder();
      }
    }
    

    if using Stateless widget, you can access the passed data through Navigator directly like postCode, week or postName etc. If using Stateful, you need to use widget.postCode, widget.week or widget.postName notation.

    Login or Signup to reply.
  2. using Getx Package
    Get.to(ScreenName());
    https://pub.dev/packages/get

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