Флаттер: создание настраиваемого многократно используемого изображения виджета - PullRequest
0 голосов
/ 22 апреля 2020

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

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

class CustomLogo extends StatelessWidget {

  @override
  Widget showLogo(var nameImage, double radiusImage, double LeftPadding) {
    return new Hero(
      tag: 'hero',
      child: Padding(
        padding: EdgeInsets.fromLTRB(LeftPadding, 70.0, 0.0, 0.0),
        child: CircleAvatar(
          backgroundColor: Colors.transparent,
          radius: radiusImage,
          child: Image.asset('assets/' + name),
        ),
      ),
    );
  }
}

И я не понимаю переопределения и "конструкции" виджета, как я могу использовать var в виджете

1 Ответ

1 голос
/ 22 апреля 2020

Вы должны создать конструктор для получения значений, откуда вы пытаетесь вызвать.

Следующим способом вы можете создать отдельный виджет и передать аргументы.

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

class CustomLogo extends StatelessWidget {
  final nameImage;
  final radiusImage;
  final leftPadding;

  CustomLogo({this.leftPadding, this.nameImage, this.radiusImage});
  @override
  Widget build(BuildContext context) {
    return new Hero(
      tag: 'hero',
      child: Padding(
        padding: EdgeInsets.fromLTRB(leftPadding, 70.0, 0.0, 0.0),
        child: CircleAvatar(
          backgroundColor: Colors.transparent,
          radius: radiusImage,
          child: Image.asset('assets/' + nameImage),
        ),
      ),
    );
  }
}

Как вы можете позвонить или использовать этот виджет.

CustomLogo(leftPadding: 10,radiusImage: 5,nameImage: "hello",)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...