Как лучше продлить виджет? - PullRequest
0 голосов
/ 29 октября 2018

Я хочу создать пользовательский виджет Scaffold, содержащий кнопку, чтобы я мог повторно использовать этот CustomScaffold .В настоящее время мне нужно указать все параметры в конструкторе Scaffold точно так же, как и мои входные параметры.Есть ли лучший способ расширить виджет?

class CustomScaffold {
  // if I want to have fully customized Scaffold, I need to have the following (duplicate) parameters exactly the same what Scaffold defined 
  // Key key,
  // this.appBar,
  // this.body,
  // this.floatingActionButton,
  // this.floatingActionButtonLocation,
  // this.floatingActionButtonAnimator,
  // this.persistentFooterButtons,
  // this.drawer,
  // this.endDrawer,
  // this.bottomNavigationBar,
  // this.bottomSheet,
  // this.backgroundColor,
  // this.resizeToAvoidBottomPadding = true,
  // this.primary = true,

  static Scaffold createCustomScaffold({@required AppBar appBar, Widget body}) {
    final Widget cart = SafeArea(
      child: Align(
        alignment: Alignment.bottomCenter,
        child: RaisedButton(
          child: new Text("??"),
          color: Colors.amber,
          onPressed: () {
            print("Hello");
          },
        )
      )
    );

    final Widget stack = Stack(
        children: <Widget>[
          body,
          cart
        ],
     );

    return Scaffold(appBar: appBar,
                    body: stack);
  }

}

1 Ответ

0 голосов
/ 29 октября 2018

Мне нужно указать все параметры в конструкторе Scaffold точно так же, как мои входные параметры. Есть ли лучший способ расширить виджет?

Нет лучшего способа. Есть обсуждения, чтобы позволить более краткий синтаксис, но не ясно, будет ли это реализовано.

На самом деле, лучшая практика - не расширять, а компоновать, но это не меняет того, что вам нужно явно пересылать все параметры конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...