import 'package:didvan/config/design_config.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/models/enums.dart'; import 'package:didvan/routes/routes.dart'; import 'package:didvan/views/ai/info_state.dart'; import 'package:didvan/views/widgets/didvan/divider.dart'; import 'package:didvan/views/widgets/didvan/text.dart'; import 'package:didvan/views/widgets/hoshan_app_bar.dart'; import 'package:didvan/views/widgets/state_handlers/empty_connection.dart'; import 'package:didvan/views/widgets/video/chat_video_player.dart'; import 'package:didvan/views/widgets/video/primary_controls.dart'; import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:provider/provider.dart'; class InfoPage extends StatefulWidget { const InfoPage({Key? key}) : super(key: key); @override State createState() => _InfoPageState(); } class _InfoPageState extends State { @override Widget build(BuildContext context) { return Scaffold( appBar: HoshanAppBar( withActions: false, onBack: () => Navigator.pop(context), ), body: Consumer(builder: (context, state, child) { if (state.appState == AppState.busy) { return Center( child: SpinKitThreeBounce( size: 46, color: Theme.of(context).colorScheme.primary, ), ); } if (state.appState == AppState.failed) { return Center( child: EmptyConnection(onRetry: state.getTools), ); } return Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( child: SingleChildScrollView( physics: const BouncingScrollPhysics(), child: Column( children: [ Center( child: Padding( padding: const EdgeInsets.only(top: 32, bottom: 24), child: DidvanText( state.infoModel.title ?? 'آموزش پرامپت نویسی اصولی', fontSize: 20, fontWeight: FontWeight.bold, color: Theme.of(context).colorScheme.checkFav, ), ), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 20.0), child: ClipRRect( borderRadius: DesignConfig.lowBorderRadius, child: ChatVideoPlayer( src: state.infoModel.url ?? '', showOptions: true, custome: const PrimaryControls(), ), ), ), Padding( padding: const EdgeInsets.all(20.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Row( children: [ DidvanText( 'آنچه در این ویدیو خواهید دید:', fontSize: 16, ), ], ), Padding( padding: const EdgeInsets.all(8.0), child: ListView.builder( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, itemCount: state.infoModel.description!.length, itemBuilder: (context, index) => summery( state.infoModel.description?[index] ?? ''), )) ], ), ), ], ), ), ), Column( children: [ const Padding( padding: EdgeInsets.symmetric(horizontal: 20.0), child: DidvanDivider( verticalPadding: 12, height: 4, ), ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon( DidvanIcons.support_solid, size: 32, ), const SizedBox( width: 8, ), const DidvanText('هنوز سوالی دارید؟'), TextButton( onPressed: () { Navigator.of(context).pushNamed( Routes.direct, arguments: {'type': 'پشتیبانی اپلیکیشن'}, ); }, child: const DidvanText( ' پیام به پشتیبانی', color: Color(0xff007EA7), ), ) ], ), const SizedBox( height: 32, ), ], ) ], ); }), ); } Column summery(String text) { return Column( children: [ Row( children: [ Container( margin: const EdgeInsets.only(left: 8), decoration: const ShapeDecoration( shape: CircleBorder( side: BorderSide(width: 3, color: Colors.black)), ), ), DidvanText( text, fontSize: 14, ), ], ), const SizedBox( height: 4, ), ], ); } }