build method

  1. @override
Widget build(
  1. BuildContext context,
  2. UpgradeBaseState state
)
override

Implementation

@override
Widget build(BuildContext context, UpgradeBaseState state) {
  if (Upgrader().debugLogging) {
    print('UpgradeCard: build UpgradeCard');
  }

  return FutureBuilder(
      future: state.initialized,
      builder: (BuildContext context, AsyncSnapshot<bool> processed) {
        if (processed.connectionState == ConnectionState.done &&
            processed.data != null &&
            processed.data!) {
          assert(Upgrader().messages != null);
          if (Upgrader().shouldDisplayUpgrade()) {
            final title = Upgrader().messages!.message(UpgraderMessage.title);
            final message = Upgrader().message();
            final releaseNotes = Upgrader().releaseNotes;
            final shouldDisplayReleaseNotes =
                Upgrader().shouldDisplayReleaseNotes();
            if (Upgrader().debugLogging) {
              print('UpgradeCard: will display');
              print('UpgradeCard: showDialog title: $title');
              print('UpgradeCard: showDialog message: $message');
              print(
                  'UpgradeCard: shouldDisplayReleaseNotes: $shouldDisplayReleaseNotes');

              print('UpgradeCard: showDialog releaseNotes: $releaseNotes');
            }

            Widget? notes;
            if (shouldDisplayReleaseNotes && releaseNotes != null) {
              notes = Padding(
                  padding: EdgeInsets.only(top: 15.0),
                  child: Column(
                    mainAxisSize: MainAxisSize.min,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      Text('Release Notes:',
                          style: TextStyle(fontWeight: FontWeight.bold)),
                      Text(
                        releaseNotes,
                        maxLines: 15,
                        overflow: TextOverflow.ellipsis,
                      ),
                    ],
                  ));
            }

            return Card(
                color: Colors.white,
                margin: margin,
                child: AlertStyleWidget(
                    title: Text(title ?? ''),
                    content: Column(
                      mainAxisSize: MainAxisSize.min,
                      mainAxisAlignment: MainAxisAlignment.start,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: <Widget>[
                        Text(message),
                        Padding(
                            padding: EdgeInsets.only(top: 15.0),
                            child: Text(Upgrader()
                                    .messages!
                                    .message(UpgraderMessage.prompt) ??
                                '')),
                        if (notes != null) notes,
                      ],
                    ),
                    actions: <Widget>[
                      if (Upgrader().showIgnore)
                        TextButton(
                            child: Text(Upgrader().messages!.message(
                                    UpgraderMessage.buttonTitleIgnore) ??
                                ''),
                            onPressed: () {
                              // Save the date/time as the last time alerted.
                              Upgrader().saveLastAlerted();

                              Upgrader().onUserIgnored(context, false);
                              state.forceUpdateState();
                            }),
                      if (Upgrader().showLater)
                        TextButton(
                            child: Text(Upgrader().messages!.message(
                                    UpgraderMessage.buttonTitleLater) ??
                                ''),
                            onPressed: () {
                              // Save the date/time as the last time alerted.
                              Upgrader().saveLastAlerted();

                              Upgrader().onUserLater(context, false);
                              state.forceUpdateState();
                            }),
                      TextButton(
                          child: Text(Upgrader().messages!.message(
                                  UpgraderMessage.buttonTitleUpdate) ??
                              ''),
                          onPressed: () {
                            // Save the date/time as the last time alerted.
                            Upgrader().saveLastAlerted();

                            Upgrader().onUserUpdated(context, false);
                            state.forceUpdateState();
                          }),
                    ]));
          } else {
            if (Upgrader().debugLogging) {
              print('UpgradeCard: will not display');
            }
          }
        }
        return Container(width: 0.0, height: 0.0);
      });
}