Newer
Older
flutterBaseApp / lib / ui / pages / common / about_page.dart
StephanieGitHub on 9 Feb 2021 5 KB first commit
import 'package:base_app/blocs/bloc_provider.dart';
import 'package:base_app/blocs/main_bloc.dart';
import 'package:base_app/common/common.dart';
import 'package:base_app/models/common/component_model.dart';
import 'package:base_app/models/common/version_model.dart';
import 'package:base_app/res/index.dart';
import 'package:base_app/ui/pages/common/help_page.dart';
import 'package:base_app/ui/widgets/common/com_item.dart';
import 'package:base_app/ui/widgets/common/dialog/upgrade_dialog_widget.dart';
import 'package:base_app/utils/utils.dart';
import 'package:fluintl/fluintl.dart';
import 'package:flutter/material.dart';

/// 关于页面: 版本更新,帮助等
class AboutPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final MainBloc bloc = BlocProvider.of<MainBloc>(context);
    // 帮助
    ComponentModel help = ComponentModel(
        title: IntlUtil.getString(context, Ids.titleHelp), page: HelpPage());

    return Scaffold(
      appBar: AppBar(
        title: Text(IntlUtil.getString(context, Ids.titleAbout)),
        centerTitle: true,
      ),
      body: ListView(
        children: <Widget>[
          // logo,app名称和版本号展示
          Container(
              height: 160.0,
              alignment: Alignment.center,
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                mainAxisSize: MainAxisSize.min,
                children: <Widget>[
                  Card(
                    color: Theme.of(context).primaryColor,
                    elevation: 0.0,
                    shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.all(Radius.circular(6.0))),
                    child: Image.asset(
                      Utils.getImgPath('logo'),
                      width: 72.0,
                      fit: BoxFit.fill,
                      height: 72.0,
                    ),
                  ),
                  Gaps.vGap5,
                  Text(
                    AppConfig.appName + ' ' + AppConfig.version,
                    style: TextStyle(color: Colours.gray_99, fontSize: 14.0),
                  )
                ],
              ),
              decoration: BoxDecoration(
                  color: Colors.white,
                  border: Border.all(width: 0.33, color: Colours.divider))),
          // 帮助
          ComArrowItem(help),
          // 版本更新检测,versionStream
          StreamBuilder(
              stream: bloc.versionStream,
              builder:
                  (BuildContext context, AsyncSnapshot<VersionModel> snapshot) {
                VersionModel model = snapshot.data;
                return Container(
                  child: Material(
                    color: Colors.white,
                    child: ListTile(
                      onTap: () {
                        // 点击监测版本
                        if (model == null) {
                          bloc.getVersion();
                        } else {
                          if (Utils.getUpdateStatus(model.version) > 0) {
                            //NavigatorUtil.launchInBrowser(model.url, title: model.title);
                            showDialog(
                              context: context,
                              barrierDismissible: false,
                              builder: (BuildContext context) => UpgradeDialog(
                                versionModel: model,
                                appId: AppConfig.appId,
                              ),
                            );
                          }
                        }
                      },
                      title:
                          Text(IntlUtil.getString(context, Ids.titleVersion)),
                      //dense: true,
                      trailing: Row(
                        mainAxisSize: MainAxisSize.min,
                        children: <Widget>[
                          Text(
                            model == null
                                ? ''
                                : (Utils.getUpdateStatus(model.version) == 0
                                    ? IntlUtil.getString(
                                        context, Ids.hint_is_new)
                                    : IntlUtil.getString(
                                        context, Ids.hint_new_version)),
                            style: TextStyle(
                                color: (model != null &&
                                        Utils.getUpdateStatus(model.version) !=
                                            0)
                                    ? Colors.red
                                    : Colors.grey,
                                fontSize: 14.0),
                          ),
                          Icon(
                            Icons.navigate_next,
                            color: Colors.grey,
                          ),
                        ],
                      ),
                    ),
                  ),
                  decoration: Decorations.bottom,
                );
              }),
        ],
      ),
    );
  }
}