Переместите StatefulBuilder
выше в дерево виджетов, затем передайте StateSetter
в функцию, вызывающую showBottomSheet
, например:
Widget buildBody(context){
return Container(
child: StatefulBuilder( builder: (BuildContext context, StateSetter setstates){
return Column(
children: <Widget>[
FlatButton(
child: Text('open bottom sheet'),
onPressed: () {
showbt(context, setstates);
},
),
Draggable(
feedback: Container(
padding: EdgeInsets.all(10),
child: Material(
type: MaterialType.transparency,
child: Text(
'name',
style: TextStyle(fontSize: 30, color: color),
),
)),
child: Container(
padding: EdgeInsets.all(10),
child: Text(
'name',
style: TextStyle(fontSize: 30, color: color),
)),
childWhenDragging: Container(),
onDragEnd: (DraggableDetails d) {
setState(() {
//pos[0].setPosition(d.offset.dx, d.offset.dy);
});
},
),
],
);
},
),
);
}
код showbt:
void showbt(context, setstates) {
showBottomSheet(
context: context,
builder: (context) {
return Container(
color: Colors.grey[200],
height: 300,
child: Padding(
padding: const EdgeInsets.all(15.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
// Text("Select Text Color"),
InkWell(
onTap: () {
setstates(() {
color = Colors.grey;
});
print('color : ');
print(color);
Navigator.pop(context);
},
child: Container(
decoration: BoxDecoration(
color: Colors.black,
borderRadius: BorderRadius.circular(40),
),
child: Icon(Icons.brightness_1,
size: 60, color: Colors.grey),
)),
],
),
),
);
});
}