-1

Here I don't want to rebuild or update other widgets, I have to put the consumer at upper level

@override Widget build(BuildContext context) { PositionProvider positionProvider = Provider.of(context, listen: false);

return Scaffold(
  appBar: AppBar(
    title: Text("Test Provider"),
  ),
  body: Consumer<PositionProvider>(
    builder: (context, value, child) => Column(
      children: [
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: [
            TextButton(
                onPressed: () =>
                    positionProvider.setSelectedPosition("Start"),
                child: Text("Start")),
            TextButton(
                onPressed: () =>
                    positionProvider.setSelectedPosition("Center"),
                child: Text("Center")),
            TextButton(
                onPressed: () =>
                    positionProvider.setSelectedPosition("End"),
                child: Text("End"))
          ],
        ),
        Row(
          mainAxisAlignment: positionProvider.getSelectedPosition == "Start"
              ? MainAxisAlignment.start
              : positionProvider.getSelectedPosition == "Center"
                  ? MainAxisAlignment.center
                  : MainAxisAlignment.end,
          children: [Text("Message")],
        ),
        Html(data: positionProvider.getHtmlContents)
      ],
    ),
  ),
);

}

1 Answers1

0
// my provider class
class PositionProvider with ChangeNotifier {
  String selectedPosition = "Start";
  String htmlContents =
      ''' <img src="https://i.picsum.photos/id/9/250/250.jpg?hmac=tqDH5wEWHDN76mBIWEPzg1in6egMl49qZeguSaH9_VI" alt="Girl in a jacket" width="500" height="600">''';

  String get getSelectedPosition => selectedPosition;

  String get getHtmlContents => htmlContents;

  void setSelectedPosition(String selectedPosition) {
    this.selectedPosition = selectedPosition;
    notifyListeners();
  }

  void setHtmlContents(String selectedPosition) {
    this.htmlContents = htmlContents;
    notifyListeners();
  }
}