StatelessWidget для StatefulWidget - PullRequest
1 голос
/ 27 января 2020

Я адаптирую класс из Wikipedia Explorer (с открытым исходным кодом) для просмотра предварительно выбранных страниц. Я пытаюсь добавить счетчик страниц, который не обновляется, потому что это StatelessWidget. Может кто-нибудь помочь мне превратить его в StatefulWidget?

class NavigationControls extends StatelessWidget {
  const NavigationControls(this._webViewControllerFuture)
      : assert(_webViewControllerFuture != null);

  final Future<WebViewController> _webViewControllerFuture;

  @override
  Widget build(BuildContext context) {
    return FutureBuilder<WebViewController>(
      future: _webViewControllerFuture,
      builder:
          (BuildContext context, AsyncSnapshot<WebViewController> snapshot) {
        final bool webViewReady =
            snapshot.connectionState == ConnectionState.done;
        final WebViewController controller = snapshot.data;
        return _buttonsPagination(webViewReady, controller, context);
      },
    );
  }

Ответы [ 2 ]

1 голос
/ 27 января 2020

Вы можете просто навести курсор на StatelessWidget, нажать Alt + Enter и нажать Преобразовать в StatefulWidget. Весь шаблонный код будет создан для вас автоматически.

Yay!

enter image description here

1 голос
/ 27 января 2020

Вы можете автоматически преобразовать его, нажав сочетание клавиш на клавиатуре выше StatelessWidget, и оно должно предоставить вам возможность преобразовать в StatefulWidget.

в Ма c try: CMD + .

В окне try: CTRL + .

В любом случае вот оно:

class NavigationControls extends StatefulWidget {
  const NavigationControls(this._webViewControllerFuture)
      : assert(_webViewControllerFuture != null);

  final Future<WebViewController> _webViewControllerFuture;

  @override
  _NavigationControlsState createState() => _NavigationControlsState();


class _NavigationControlsState extends State<NavigationControls> {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder<WebViewController>(
      future: widget._webViewControllerFuture,
      builder:
          (BuildContext context, AsyncSnapshot<WebViewController> snapshot) {
        final bool webViewReady =
            snapshot.connectionState == ConnectionState.done;
        final WebViewController controller = snapshot.data;
        return _buttonsPagination(webViewReady, controller, context);
      },
    );
  }}
...