Please Help :- How to Read Value of Dynamically Created SmoothRatingStar Widgets

**I am getting List of String values from an API. In Flutter I have to Create Text based on the List 
  of String values in the List. And then I need to Create SmoothRatingStar widget for each of these 
Texts.
I was able to do that. Now what I need to do is , Once user clicks the SmoothRatingStar , I need to 
read that value and display it into under of SmoothRatingStar . But now I am getting same values 
because of setState() usage. I don't know How do I implement this to get each Value. So anyone who is 
experience on this , please help me to fix this. Thanks in advance.**

This is the Code. This returns the same value for each Stars .
// [Image Attached--**Only getting this as Output** ][1]

// Namespaces
import 'package:flutter/material.dart';
import 'package:smooth_star_rating/smooth_star_rating.dart';

// main function
void main() 
{ runApp(MyApp());}

// Stateless widget
class MyApp extends StatelessWidget{
@override
 Widget build(BuildContext context) {
   return MaterialApp(
    title: 'Flutter Demo',
    theme: ThemeData(
      primarySwatch: Colors.blue,
      visualDensity: VisualDensity.adaptivePlatformDensity,
    ),
    home: MyHomePage());
}}

// Stateful widget
class MyHomePage extends StatefulWidget{
@override
MyHomePageState createState() => _MyHomePageState();}

// State
class _MyHomePageState extends State<MyHomePage> {
var ratingVal = 0.0;
double textVal;
List<String> listTextValues = ['Apple', 'Orange', 'Grape'];
// 'listTextValues' is getting from API.So the number of Items will be different on each time.

// Build Method
@override
Widget build(BuildContext context) {
return Scaffold(
  body: new ListView.builder
    (
      itemCount: listTextValues.length,
      itemBuilder: (BuildContext ctxt, int index) => buildBody(ctxt, index)
  ),);}

// Dynamic Creation of Text
Widget buildBody(BuildContext ctxt, int index) {
return Container(
  child: Padding(
    padding: EdgeInsets.all(50.0),
    child: Center(
      child: Column(
        children: <Widget>[
          Text(listTextValues[index]),
          buildSmoothStarRating(),
          Text(textVal.toString()),
        ],
      ),),),);}

// Creation of SmoothStarRating Widget
SmoothStarRating buildSmoothStarRating() {
return SmoothStarRating(
    rating: ratingVal,
    isReadOnly: false,
    size: 30,
    borderColor: Colors.grey,
    color: Colors.pinkAccent,
    filledIconData: Icons.star,
    halfFilledIconData: Icons.star_half,
    defaultIconData: Icons.star_border,
    allowHalfRating: true,
    starCount: 10,
    spacing: 1.0,
    onRated: (rate){
      setState((){
        textVal = rate; // Read Value
      });
    });}
}