Flutter sowing error when using listbuilder in future builder

1

I am using ListBuilder in Future builder passing the snapshot data in a class and with help of listBuilder showing it in a form of list all things are working perfectly but in end of list its showing the error also showing error in UI

My code

Widget build(BuildContext context) {
    double statusBarHeight = MediaQuery.of(context).padding.top;
    double width = MediaQuery.of(context).size.width;
    double height = MediaQuery.of(context).size.height;
    return Expanded(
      child: FutureBuilder(
          future: doSomeAsyncStuff(),
          builder: (BuildContext context, AsyncSnapshot<List> snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              if (snapshot.hasData) {
                print('working');
                print(snapshot.data);
                return ListViewPosts(posts: snapshot);
              }
            }
            return Center(
              child: Text("Not Loaded Yet!!"),
            );
          }),
    );
  }

}

class ListViewPosts extends StatelessWidget {
  final posts;

  ListViewPosts({Key key, this.posts}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    double statusBarHeight = MediaQuery.of(context).padding.top;
    double width = MediaQuery.of(context).size.width;
    double height = MediaQuery.of(context).size.height;
    return Expanded(
      child: Container(
        child: ListView.builder(
            itemCount: posts.data.length,
            padding: const EdgeInsets.all(15.0),
            itemBuilder: (context, position) {
              return Container(
                height: height * 0.4,
                child: GestureDetector(
                  child: Center(
                    child: Card(
                      margin: EdgeInsets.zero,
                      clipBehavior: Clip.antiAlias,
                      shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(30),
                      ),
                      elevation: 30,
                      child: Container(
                        child: Stack(
                          children: <Widget>[
                            Container(
                              width: width * 0.6,
                              height: height * 0.17,
                              decoration: BoxDecoration(
                                image: DecorationImage(
                                  image: AssetImage(
                                    'assets/images/61.jpg',
                                  ),
                                  fit: BoxFit.fill,
                                ),
                              ),
                            ),
                            Padding(
                              padding: EdgeInsets.only(top: height * 0.17),
                              child: Container(
                                height: height * 0.15,
                                color: Colors.white,
                                width: MediaQuery.of(context).size.width * 0.6,
                                child: Padding(
                                  padding: const EdgeInsets.only(
                                      top: 30, bottom: 7, left: 15, right: 15),
                                  child: Row(
                                    children: <Widget>[
                                      Flexible(
                                        child: Text(
                                          posts.data[position]['Description'],
                                          style: TextStyle(
                                              color: Color(0xff343A40),
                                              fontFamily: 'OpenSans',
                                              fontWeight: FontWeight.bold,
                                              fontSize: 15),
                                        ),
                                      ),
                                    ],
                                  ),
                                ),
                              ),
                            ),
                            Positioned.fill(
                              child: Align(
                                  alignment: Alignment.centerLeft,
                                  child: Container(
                                    margin: EdgeInsets.only(left: width * 0.02),
                                    child: ClipRRect(
                                      borderRadius:
                                          BorderRadius.all(Radius.circular(12)),
                                      child: Container(
                                        height: height * 0.08,
                                        width: width * 0.4,
                                        color: Color(0xff343A40),
                                        child: Column(
                                            mainAxisAlignment:
                                                MainAxisAlignment.center,
                                            crossAxisAlignment:
                                                CrossAxisAlignment.center,
                                            children: <Widget>[
                                              Text(
                                                posts.data[position]
                                                        ['CreatedOn']
                                                    .substring(0, 10),
                                                style: TextStyle(
                                                    fontSize: 20,
                                                    color: Color(0xffFFFFFF),
                                                    fontFamily: 'OpenSans',
                                                    fontWeight:
                                                        FontWeight.bold),
                                              ),
                                            ]),
                                      ),
                                    ),
                                  )),
                            ),
                          ],
                        ),
                      ),
                    ),
                  ),
                ),
              );
            }),
      ),
    );
  }
}

Error is The method 'substring' was called on null. Receiver: null Tried calling: substring(0, 10)

enter image description here

flutter
dart
asked on Stack Overflow Aug 22, 2020 by rameez khan • edited Aug 22, 2020 by rameez khan

1 Answer

0

The problem is, one of your subString is returns null value. And you try to pass a null value in Text widget.

please try this code:

Text(
   posts.data[position]['CreatedOn'].substring(0, 10)??"Not available",
   style: TextStyle(
       fontSize: 20,
       color: Color(0xffFFFFFF),
       fontFamily: 'OpenSans',
       fontWeight:FontWeight.bold),
    ),
answered on Stack Overflow Aug 22, 2020 by Tipu Sultan

User contributions licensed under CC BY-SA 3.0