0

I want to achieve scrolling inside the list view in flutter.But the entire screen is scrolling here.Tried wrapping listview inside container and then in single child scroll view but that also doesnt work [1]: https://i.stack.imgur.com/1K3q0.png

    Scaffold(
     
      resizeToAvoidBottomInset: false,
      body: Container(
        height: double.maxFinite,
        // padding: const EdgeInsets.only(left: 8.0, right: 8),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          mainAxisAlignment: MainAxisAlignment.start,
          children: [
            Container(
              width: MediaQuery.of(context).size.width,
              child: Card(
                elevation: 15,
                child: Container()
                //DashboardAppbar(emp: loggedinEmpDetails),
              ),
            ),
            const SizedBox(
              height: 10,
            ),
            selected == 0
                ? ListView(
                //  shrinkWrap: true,
                //   physics: NeverScrollableScrollPhysics(),
                 children: [
                   leaves == null
                       ? CircularProgressIndicator()
                       : DashboardCards(leaves!),
                   const SizedBox(
                     height: 10,
                   ),
                   for (int i = 0; i < userLeaves!.length; i++)
                     dashboardLeaveCards(
                         emp: employee![0],
                         userLeaves: userLeaves![i],
                         selected: selected,
                         leaveReasons: leaveReason),
                   const SizedBox(
                     height: 5,
                   )
                 ],
                    )
                : Column(
F sam
  • 51
  • 7

2 Answers2

0

Add physics and shrinkWrap to the list view

ListView(
  shrinkWrap:true,
  physics : NeverScrollableScrollPhysics(),
)

And remove the inner SingleChildScrollView to which you added physics..

Edit

Instead of listview use List.generate


    Scaffold(
     
      resizeToAvoidBottomInset: false,
      body: Container(
        height: MediaQuery.of(context).size.height,
        // padding: const EdgeInsets.only(left: 8.0, right: 8),
        child:  Column(
          mainAxisSize: MainAxisSize.min,
          mainAxisAlignment: MainAxisAlignment.start,
          children: [
            Container(
              width: MediaQuery.of(context).size.width,
              child: Card(
                elevation: 15,
                child: Container()
                //DashboardAppbar(emp: loggedinEmpDetails),
              ),
            ),
            const SizedBox(
              height: 10,
            ),
            selected == 0
                ? Expanded( 
              child:ListView(
              shrinkWrap: true,
                 // physics: NeverScrollableScrollPhysics(),
                 children: [
                   leaves == null
                       ? CircularProgressIndicator()
                       : DashboardCards(leaves!),
                   const SizedBox(
                     height: 10,
                   ),
                   for (int i = 0; i < userLeaves!.length; i++)
                     dashboardLeaveCards(
                         emp: employee![0],
                         userLeaves: userLeaves![i],
                         selected: selected,
                         leaveReasons: leaveReason),
                   const SizedBox(
                     height: 5,
                   )
                 ],
                    )
                : Column(
             mainAxisSize: MainAxisSize.min,
             )
)
Kaushik Chandru
  • 15,510
  • 2
  • 12
  • 30
0

You don't need to wrap with multiple scrollable widget, just wrap ListView with Expanded widget, and follow this widget structure.

body: Column(
  mainAxisSize: MainAxisSize.min,
  mainAxisAlignment: MainAxisAlignment.start,
  children: [
    Container(
      width: MediaQuery.of(context).size.width,
      child: Card(elevation: 15, child: Container()
          //DashboardAppbar(emp: loggedinEmpDetails),
          ),
    ),
    const SizedBox(
      height: 10,
    ),
    selected == 0
        ? Expanded(
            child: ListView(
              children: [
                //  leaves == null
                //      ? CircularProgressIndicator()
                //      : DashboardCards(leaves!),
                const SizedBox(
                  height: 10,
                ),
                for (int i = 0; i < 4; i++)
                  Container(
                    height: 100,
                  ),
                const SizedBox(
                  height: 5,
                )
              ],
            ),
          )
        : SingleChildScrollView(
            child: Column(
              children: [],
            ),
          )
  ],
),
);
Md. Yeasin Sheikh
  • 54,221
  • 7
  • 29
  • 56