175 lines
6.2 KiB
Dart
175 lines
6.2 KiB
Dart
import '/components/appbar_widget.dart';
|
|
import '/components/nav_bar1_widget.dart';
|
|
import '/flutterlib/flutter_icon_button.dart';
|
|
import '/flutterlib/flutter_theme.dart';
|
|
import '/flutterlib/flutter_util.dart';
|
|
import '/flutterlib/flutter_widgets.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
import 'package:provider/provider.dart';
|
|
import 'bk_view_model.dart';
|
|
export 'bk_view_model.dart';
|
|
|
|
class BkViewWidget extends StatefulWidget {
|
|
const BkViewWidget({
|
|
Key? key,
|
|
required this.fileUrl,
|
|
}) : super(key: key);
|
|
|
|
final dynamic fileUrl;
|
|
|
|
@override
|
|
_BkViewWidgetState createState() => _BkViewWidgetState();
|
|
}
|
|
|
|
class _BkViewWidgetState extends State<BkViewWidget> {
|
|
late BkViewModel _model;
|
|
|
|
final scaffoldKey = GlobalKey<ScaffoldState>();
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_model = createModel(context, () => BkViewModel());
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_model.dispose();
|
|
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (isiOS) {
|
|
SystemChrome.setSystemUIOverlayStyle(
|
|
SystemUiOverlayStyle(
|
|
statusBarBrightness: Theme.of(context).brightness,
|
|
systemStatusBarContrastEnforced: true,
|
|
),
|
|
);
|
|
}
|
|
|
|
context.watch<FFAppState>();
|
|
|
|
return GestureDetector(
|
|
onTap: () => _model.unfocusNode.canRequestFocus
|
|
? FocusScope.of(context).requestFocus(_model.unfocusNode)
|
|
: FocusScope.of(context).unfocus(),
|
|
child: Scaffold(
|
|
key: scaffoldKey,
|
|
backgroundColor: FlutterTheme.of(context).primaryBackground,
|
|
appBar: PreferredSize(
|
|
preferredSize: Size.fromHeight(0.0),
|
|
child: AppBar(
|
|
backgroundColor: Color(0xFFE7E36B),
|
|
automaticallyImplyLeading: false,
|
|
actions: [],
|
|
centerTitle: false,
|
|
elevation: 0.0,
|
|
),
|
|
),
|
|
body: SafeArea(
|
|
top: true,
|
|
child: Stack(
|
|
children: [
|
|
Align(
|
|
alignment: AlignmentDirectional(0.0, 0.0),
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.max,
|
|
children: [
|
|
Expanded(
|
|
child: Align(
|
|
alignment: AlignmentDirectional(0.0, 0.0),
|
|
child: Container(
|
|
width: 390.0,
|
|
height: 546.0,
|
|
decoration: BoxDecoration(
|
|
color: Color(0xFFCECECE),
|
|
),
|
|
child: Align(
|
|
alignment: AlignmentDirectional(0.0, 0.0),
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.max,
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Row(
|
|
mainAxisSize: MainAxisSize.max,
|
|
children: [
|
|
Expanded(
|
|
child: Align(
|
|
alignment:
|
|
AlignmentDirectional(1.0, 0.0),
|
|
child: Padding(
|
|
padding:
|
|
EdgeInsetsDirectional.fromSTEB(
|
|
0.0, 5.0, 5.0, 0.0),
|
|
child: FlutterIconButton(
|
|
borderRadius: 20.0,
|
|
borderWidth: 1.0,
|
|
buttonSize: 40.0,
|
|
fillColor: Color(0xFF9B0025),
|
|
icon: Icon(
|
|
Icons.close,
|
|
color: Color(0xFFE8E8E8),
|
|
size: 26.0,
|
|
),
|
|
onPressed: () async {
|
|
context.safePop();
|
|
},
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
Expanded(
|
|
child: Align(
|
|
alignment: AlignmentDirectional(0.0, 0.0),
|
|
child: ClipRRect(
|
|
borderRadius: BorderRadius.circular(8.0),
|
|
child: Image.network(
|
|
widget.fileUrl!.toString(),
|
|
width: 300.0,
|
|
height: 200.0,
|
|
fit: BoxFit.contain,
|
|
alignment: Alignment(0.0, 0.0),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
Align(
|
|
alignment: AlignmentDirectional(0.0, 1.0),
|
|
child: wrapWithModel(
|
|
model: _model.navBar1Model,
|
|
updateCallback: () => setState(() {}),
|
|
child: NavBar1Widget(),
|
|
),
|
|
),
|
|
Align(
|
|
alignment: AlignmentDirectional(0.0, -1.0),
|
|
child: wrapWithModel(
|
|
model: _model.appbarModel,
|
|
updateCallback: () => setState(() {}),
|
|
child: AppbarWidget(),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|