Как сделать несколько многократно используемых виджетов в одном классе? - PullRequest
0 голосов
/ 23 января 2020

Я знаю, как сделать один элемент-виджет в классе и использовать его во всем приложении, примерно так:

import 'package:flutter/material.dart';

class MenuButtons extends StatelessWidget {

  final String titleName;
  final String goTo;
  final double width;
  final double height;

  MenuButtons(this.titleName,{this.goTo, this.width, this.height});

  @override
  Widget build(BuildContext context) {

    return Container(
      margin: EdgeInsets.all(10.0),
      width: width,
      height: height !=null ? height : 50.0,

      child: RaisedButton(
        color: Color.fromRGBO(121, 85, 72, 1.0),
        elevation: 5.0,
        child: Text(
          titleName,
          style: TextStyle(fontSize: 18.0, color: Colors.white),
        ),
        onPressed: () {

           Navigator.pushReplacementNamed(context, goTo);
        },
      ),
    );
  }
}

Использование будет выглядеть так:

MenuButtons('Title',goTo: 'NextScreen',width: 350.0,),

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

1 Ответ

0 голосов
/ 23 января 2020

если в новом классе есть только некоторые параметры, не относящиеся к методу сборки, вы можете объявить так, например, новый класс IndexMenuButtons

class IndexMenuButtons extends MenuButtons{
   final int buttonIndex;
   ColorMenuButtons(String titleName, this.buttonIndex, {String goTo, double width, double height}) : super(titleName, goTo, width, height);
}

Использование:

var btn = IndexMenuButtons('Title', 100, goTo: 'NextScreen',width: 350.0);
...