fixed errors and removed dependency on flutterflowtheme. next working on getting it running.

This commit is contained in:
Joshua
2024-07-06 13:00:36 -06:00
parent 12481487d9
commit a568151b2c
29 changed files with 604 additions and 977 deletions
+1
View File
@@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"
+1
View File
@@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"
+44
View File
@@ -0,0 +1,44 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
@@ -11,11 +11,11 @@ class ConversationDetailsOverlayModel
/// State fields for stateful widgets in this component. /// State fields for stateful widgets in this component.
// Model for OptionsDialog component. // Model for OptionsDialog component.
late OptionsDialogModel optionsDialogModel; late PopupModel optionsDialogModel;
@override @override
void initState(BuildContext context) { void initState(BuildContext context) {
optionsDialogModel = createModel(context, () => OptionsDialogModel()); optionsDialogModel = createModel(context, () => PopupModel());
} }
@override @override
@@ -5,6 +5,8 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'conversation_details_overlay_model.dart'; import 'conversation_details_overlay_model.dart';
export 'conversation_details_overlay_model.dart'; export 'conversation_details_overlay_model.dart';
@@ -73,29 +75,24 @@ class _ConversationDetailsOverlayWidgetState
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Padding( const Padding(
padding: const EdgeInsetsDirectional.fromSTEB(16, 0, 0, 0), padding: EdgeInsetsDirectional.fromSTEB(16, 0, 0, 0),
child: Text( child: Text(
'Chat Details', 'Chat Details',
style: AppAppAppAppAppAppAppAppAppTheme style: AppTheme.headlineSmall,
.headlineSmall
.override(
fontFamily: 'Outfit',
letterSpacing: 0,
),
), ),
), ),
Padding( Padding(
padding: const EdgeInsetsDirectional.fromSTEB(0, 0, 16, 0), padding: const EdgeInsetsDirectional.fromSTEB(0, 0, 16, 0),
child: FlutterFlowIconButton( child: FlutterFlowIconButton(
borderColor: AppAppAppAppAppAppAppAppAppTheme.alternate, borderColor: AppTheme.alternate,
borderRadius: 12, borderRadius: 12,
borderWidth: 1, borderWidth: 1,
buttonSize: 40, buttonSize: 40,
fillColor: AppAppAppAppAppAppAppAppAppTheme.accent4, fillColor: AppTheme.accent4,
icon: Icon( icon: const Icon(
Icons.close_rounded, Icons.close_rounded,
color: AppAppAppAppAppAppAppAppAppTheme.primaryText, color: AppTheme.primaryTextColor,
size: 24, size: 24,
), ),
onPressed: () async { onPressed: () async {
@@ -109,38 +106,34 @@ class _ConversationDetailsOverlayWidgetState
padding: const EdgeInsetsDirectional.fromSTEB(16, 4, 0, 4), padding: const EdgeInsetsDirectional.fromSTEB(16, 4, 0, 4),
child: RichText( child: RichText(
textScaler: MediaQuery.of(context).textScaler, textScaler: MediaQuery.of(context).textScaler,
text: TextSpan( text: const TextSpan(
children: [ children: [
const TextSpan( TextSpan(
text: 'Group Chat ID: ', text: 'Group Chat ID: ',
style: TextStyle(), style: TextStyle(),
), ),
TextSpan( TextSpan(
text: 'Hello World ', text: 'Hello World ',
style: TextStyle( style: TextStyle(
color: AppAppAppAppAppAppAppAppAppTheme.primary, color: AppTheme.primary,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
) )
], ],
style: style: AppTheme.labelMedium,
AppAppAppAppAppAppAppAppAppTheme.labelMedium.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
), ),
), ),
), ),
Expanded( const Expanded(
child: Align( child: Align(
alignment: const AlignmentDirectional(0, 0), alignment: AlignmentDirectional(0, 0),
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Divider( Divider(
thickness: 1, thickness: 1,
color: AppAppAppAppAppAppAppAppAppTheme.tertiary, color: AppTheme.tertiary,
), ),
], ],
), ),
@@ -154,18 +147,18 @@ class _ConversationDetailsOverlayWidgetState
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppAppAppAppAppAppAppAppAppTheme color: AppTheme
.secondaryBackground, .secondaryBackground,
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
border: Border.all( border: Border.all(
color: AppAppAppAppAppAppAppAppAppTheme.alternate, color: AppTheme.alternate,
), ),
), ),
child: wrapWithModel( child: wrapWithModel(
model: _model.optionsDialogModel, model: _model.optionsDialogModel,
updateCallback: () => setState(() {}), updateCallback: () => setState(() {}),
updateOnChange: true, updateOnChange: true,
child: OptionsDialogWidget(), child: const PopupWidget(),
), ),
), ),
), ),
@@ -185,26 +178,20 @@ class _ConversationDetailsOverlayWidgetState
iconPadding: iconPadding:
const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
color: color:
AppAppAppAppAppAppAppAppAppTheme.secondaryBackground, AppTheme.secondaryBackground,
textStyle: textStyle: AppTheme.titleLarge,
AppAppAppAppAppAppAppAppAppTheme.titleLarge.override(
fontFamily: 'Outfit',
fontSize: 18,
letterSpacing: 0,
),
elevation: 0, elevation: 0,
borderSide: BorderSide( borderSide: const BorderSide(
color: AppAppAppAppAppAppAppAppAppTheme.alternate, color: AppTheme.alternate,
width: 2, width: 2,
), ),
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
hoverColor: AppAppAppAppAppAppAppAppAppTheme.alternate, hoverColor: AppTheme.alternate,
hoverBorderSide: BorderSide( hoverBorderSide: const BorderSide(
color: AppAppAppAppAppAppAppAppAppTheme.alternate, color: AppTheme.alternate,
width: 2, width: 2,
), ),
hoverTextColor: hoverTextColor: AppTheme.primaryTextColor,
AppAppAppAppAppAppAppAppAppTheme.primaryText,
hoverElevation: 3, hoverElevation: 3,
), ),
), ),
@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'conversation_options_model.dart'; import 'conversation_options_model.dart';
export 'conversation_options_model.dart'; export 'conversation_options_model.dart';
@@ -40,8 +42,8 @@ class _ConversationOptionsWidgetState extends State<ConversationOptionsWidget> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: const BoxDecoration(
color: AppAppAppAppAppAppAppAppAppTheme.secondaryBackground, color: AppTheme.secondaryBackground,
), ),
child: Padding( child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(0, 12, 0, 24), padding: const EdgeInsetsDirectional.fromSTEB(0, 12, 0, 24),
@@ -60,35 +62,30 @@ class _ConversationOptionsWidgetState extends State<ConversationOptionsWidget> {
children: [ children: [
Card( Card(
clipBehavior: Clip.antiAliasWithSaveLayer, clipBehavior: Clip.antiAliasWithSaveLayer,
color: AppAppAppAppAppAppAppAppAppTheme.primaryBackground, color: AppTheme.primaryBackground,
elevation: 0, elevation: 0,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(40), borderRadius: BorderRadius.circular(40),
), ),
child: Padding( child: const Padding(
padding: const EdgeInsets.all(8), padding: EdgeInsets.all(8),
child: Icon( child: Icon(
Icons.share_rounded, Icons.share_rounded,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 20, size: 20,
), ),
), ),
), ),
Expanded( const Expanded(
child: Padding( child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(12, 0, 0, 0), padding: EdgeInsetsDirectional.fromSTEB(12, 0, 0, 0),
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'Share', 'Share',
style: AppAppAppAppAppAppAppAppAppTheme style: AppTheme.labelLarge,
.labelLarge
.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
), ),
], ],
), ),
@@ -109,35 +106,30 @@ class _ConversationOptionsWidgetState extends State<ConversationOptionsWidget> {
children: [ children: [
Card( Card(
clipBehavior: Clip.antiAliasWithSaveLayer, clipBehavior: Clip.antiAliasWithSaveLayer,
color: AppAppAppAppAppAppAppAppAppTheme.primaryBackground, color: AppTheme.primaryBackground,
elevation: 0, elevation: 0,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(40), borderRadius: BorderRadius.circular(40),
), ),
child: Padding( child: const Padding(
padding: const EdgeInsets.all(8), padding: EdgeInsets.all(8),
child: Icon( child: Icon(
Icons.insert_link, Icons.insert_link,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 20, size: 20,
), ),
), ),
), ),
Expanded( const Expanded(
child: Padding( child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(12, 0, 0, 0), padding: EdgeInsetsDirectional.fromSTEB(12, 0, 0, 0),
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'Get Link', 'Get Link',
style: AppAppAppAppAppAppAppAppAppTheme style: AppTheme.labelLarge,
.labelLarge
.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
), ),
], ],
), ),
@@ -158,35 +150,30 @@ class _ConversationOptionsWidgetState extends State<ConversationOptionsWidget> {
children: [ children: [
Card( Card(
clipBehavior: Clip.antiAliasWithSaveLayer, clipBehavior: Clip.antiAliasWithSaveLayer,
color: AppAppAppAppAppAppAppAppAppTheme.primaryBackground, color: AppTheme.primaryBackground,
elevation: 0, elevation: 0,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(40), borderRadius: BorderRadius.circular(40),
), ),
child: Padding( child: const Padding(
padding: const EdgeInsets.all(8), padding: EdgeInsets.all(8),
child: Icon( child: Icon(
Icons.mode_edit, Icons.mode_edit,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 20, size: 20,
), ),
), ),
), ),
Expanded( const Expanded(
child: Padding( child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(12, 0, 0, 0), padding: EdgeInsetsDirectional.fromSTEB(12, 0, 0, 0),
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'Model selection', 'Model selection',
style: AppAppAppAppAppAppAppAppAppTheme style: AppTheme.labelLarge,
.labelLarge
.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
), ),
], ],
), ),
@@ -207,35 +194,30 @@ class _ConversationOptionsWidgetState extends State<ConversationOptionsWidget> {
children: [ children: [
Card( Card(
clipBehavior: Clip.antiAliasWithSaveLayer, clipBehavior: Clip.antiAliasWithSaveLayer,
color: AppAppAppAppAppAppAppAppAppTheme.primaryBackground, color: AppTheme.primaryBackground,
elevation: 0, elevation: 0,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(40), borderRadius: BorderRadius.circular(40),
), ),
child: Padding( child: const Padding(
padding: const EdgeInsets.all(8), padding: EdgeInsets.all(8),
child: Icon( child: Icon(
Icons.hide_source, Icons.hide_source,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 20, size: 20,
), ),
), ),
), ),
Expanded( const Expanded(
child: Padding( child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(12, 0, 0, 0), padding: EdgeInsetsDirectional.fromSTEB(12, 0, 0, 0),
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'Private', 'Private',
style: AppAppAppAppAppAppAppAppAppTheme style: AppTheme.labelLarge,
.labelLarge
.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
), ),
], ],
), ),
@@ -13,20 +13,19 @@ class ConversationThreadModel
final formKey = GlobalKey<FormState>(); final formKey = GlobalKey<FormState>();
// Model for ConversationBubbles component. // Model for ConversationBubbles component.
late ConversationBubblesModel conversationBubblesModel; //late ConversationBubblesModel conversationBubblesModel;
// Model for PromptBox component. // Model for PromptBox component.
late PromptBoxModel promptBoxModel; late PromptBoxModel promptBoxModel;
@override @override
void initState(BuildContext context) { void initState(BuildContext context) {
conversationBubblesModel = //conversationBubblesModel = createModel(context, () => ConversationBubblesModel());
createModel(context, () => ConversationBubblesModel());
promptBoxModel = createModel(context, () => PromptBoxModel()); promptBoxModel = createModel(context, () => PromptBoxModel());
} }
@override @override
void dispose() { void dispose() {
conversationBubblesModel.dispose(); //conversationBubblesModel.dispose();
promptBoxModel.dispose(); promptBoxModel.dispose();
} }
} }
@@ -6,6 +6,8 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'conversation_thread_model.dart'; import 'conversation_thread_model.dart';
export 'conversation_thread_model.dart'; export 'conversation_thread_model.dart';
@@ -44,8 +46,8 @@ class _ConversationThreadWidgetState extends State<ConversationThreadWidget> {
return Container( return Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
decoration: BoxDecoration( decoration: const BoxDecoration(
color: AppAppAppAppAppAppAppAppAppTheme.primaryBackground, color: AppTheme.primaryBackground,
), ),
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
@@ -71,20 +73,21 @@ class _ConversationThreadWidgetState extends State<ConversationThreadWidget> {
minHeight: MediaQuery.sizeOf(context).height * 1, minHeight: MediaQuery.sizeOf(context).height * 1,
), ),
decoration: const BoxDecoration(), decoration: const BoxDecoration(),
child: wrapWithModel( //child: wrapWithModel(
model: _model.conversationBubblesModel, //model: _model.conversationBubblesModel,
updateCallback: () => setState(() {}), //updateCallback: () => setState(() {}),
child: ConversationBubblesWidget(), //child: ConversationBubblesWidget(),
), //child: const Text("test"),
//),
), ),
], ],
), ),
), ),
Container( Container(
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: const BoxDecoration(
color: AppAppAppAppAppAppAppAppAppTheme.secondaryBackground, color: AppTheme.secondaryBackground,
boxShadow: const [ boxShadow: [
BoxShadow( BoxShadow(
blurRadius: 3, blurRadius: 3,
color: Color(0x33000000), color: Color(0x33000000),
@@ -95,6 +98,7 @@ class _ConversationThreadWidgetState extends State<ConversationThreadWidget> {
) )
], ],
), ),
// TODO
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
@@ -110,44 +114,45 @@ class _ConversationThreadWidgetState extends State<ConversationThreadWidget> {
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
FlutterFlowMediaDisplay( // FlutterFlowMediaDisplay(
path: '', // path: '',
imageBuilder: (path) => ClipRRect( // imageBuilder: (path) => ClipRRect(
borderRadius: BorderRadius.circular(8), // borderRadius: BorderRadius.circular(8),
child: CachedNetworkImage( // child: CachedNetworkImage(
fadeInDuration: const Duration(milliseconds: 500), // fadeInDuration: const Duration(milliseconds: 500),
fadeOutDuration: // fadeOutDuration:
const Duration(milliseconds: 500), // const Duration(milliseconds: 500),
imageUrl: path, // imageUrl: path,
width: 120, // width: 120,
height: 100, // height: 100,
fit: BoxFit.cover, // fit: BoxFit.cover,
), // ),
), // ),
videoPlayerBuilder: (path) => // TODO
FlutterFlowVideoPlayer( // videoPlayerBuilder: (path) =>
path: path, // FlutterFlowVideoPlayer(
width: 300, // path: path,
autoPlay: false, // width: 300,
looping: true, // autoPlay: false,
showControls: true, // looping: true,
allowFullScreen: true, // showControls: true,
allowPlaybackSpeedMenu: false, // allowFullScreen: true,
), // allowPlaybackSpeedMenu: false,
), // ),
// ),
Align( Align(
alignment: const AlignmentDirectional(-1, -1), alignment: const AlignmentDirectional(-1, -1),
child: FlutterFlowIconButton( child: FlutterFlowIconButton(
borderColor: borderColor:
AppAppAppAppAppAppAppAppAppTheme.error, AppTheme.error,
borderRadius: 20, borderRadius: 20,
borderWidth: 2, borderWidth: 2,
buttonSize: 40, buttonSize: 40,
fillColor: AppAppAppAppAppAppAppAppAppTheme fillColor: AppTheme
.primaryBackground, .primaryBackground,
icon: Icon( icon: const Icon(
Icons.delete_outline_rounded, Icons.delete_outline_rounded,
color: AppAppAppAppAppAppAppAppAppTheme.error, color: AppTheme.error,
size: 24, size: 24,
), ),
onPressed: () { onPressed: () {
@@ -173,7 +178,7 @@ class _ConversationThreadWidgetState extends State<ConversationThreadWidget> {
child: wrapWithModel( child: wrapWithModel(
model: _model.promptBoxModel, model: _model.promptBoxModel,
updateCallback: () => setState(() {}), updateCallback: () => setState(() {}),
child: PromptBoxWidget(), child: const PromptBoxWidget(),
), ),
), ),
), ),
@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'model_item_model.dart'; import 'model_item_model.dart';
export 'model_item_model.dart'; export 'model_item_model.dart';
@@ -48,7 +50,7 @@ class _ModelItemWidgetState extends State<ModelItemWidget> {
}), }),
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppAppAppAppAppAppAppAppAppTheme.primaryBackground, color: AppTheme.primaryBackground,
borderRadius: BorderRadius.circular(0), borderRadius: BorderRadius.circular(0),
), ),
child: Padding( child: Padding(
@@ -60,29 +62,25 @@ class _ModelItemWidgetState extends State<ModelItemWidget> {
width: 40, width: 40,
height: 40, height: 40,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppAppAppAppAppAppAppAppAppTheme.accent1, color: AppTheme.accent1,
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
border: Border.all( border: Border.all(
color: AppAppAppAppAppAppAppAppAppTheme.primary, color: AppTheme.primary,
width: 2, width: 2,
), ),
), ),
child: Align( child: const Align(
alignment: const AlignmentDirectional(0, 0), alignment: AlignmentDirectional(0, 0),
child: Text( child: Text(
'A', 'A',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppAppAppAppAppAppAppAppAppTheme.bodyLarge.override( style: AppTheme.bodyLarge,
fontFamily: 'Readex Pro',
letterSpacing: 0,
fontWeight: FontWeight.bold,
),
), ),
), ),
), ),
Expanded( const Expanded(
child: Padding( child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(12, 0, 8, 0), padding: EdgeInsetsDirectional.fromSTEB(12, 0, 8, 0),
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@@ -90,22 +88,13 @@ class _ModelItemWidgetState extends State<ModelItemWidget> {
children: [ children: [
Text( Text(
'Randy Peterson', 'Randy Peterson',
style: AppAppAppAppAppAppAppAppAppTheme.bodyMedium.override( style: AppTheme.bodyMedium,
fontFamily: 'Readex Pro',
letterSpacing: 0,
fontWeight: FontWeight.bold,
),
), ),
Padding( Padding(
padding: const EdgeInsetsDirectional.fromSTEB(0, 4, 0, 0), padding: EdgeInsetsDirectional.fromSTEB(0, 4, 0, 0),
child: Text( child: Text(
'name@domainname.com', 'name@domainname.com',
style: style: AppTheme.bodySmall,
AppAppAppAppAppAppAppAppAppTheme.bodySmall.override(
fontFamily: 'Readex Pro',
color: AppAppAppAppAppAppAppAppAppTheme.primary,
letterSpacing: 0,
),
), ),
), ),
], ],
@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'no_chats_model.dart'; import 'no_chats_model.dart';
export 'no_chats_model.dart'; export 'no_chats_model.dart';
@@ -59,11 +61,7 @@ class _NoChatsWidgetState extends State<NoChatsWidget> {
child: Text( child: Text(
widget.title, widget.title,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppAppAppAppAppAppAppAppAppTheme.headlineSmall.override( style: AppTheme.headlineSmall,
fontFamily: 'Outfit',
color: AppAppAppAppAppAppAppAppAppTheme.primaryText,
letterSpacing: 0,
),
), ),
), ),
Padding( Padding(
@@ -71,10 +69,7 @@ class _NoChatsWidgetState extends State<NoChatsWidget> {
child: Text( child: Text(
widget.body, widget.body,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppAppAppAppAppAppAppAppAppTheme.labelMedium.override( style: AppTheme.labelMedium,
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
), ),
), ),
], ],
@@ -1,10 +1,10 @@
import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'options_dialog_widget.dart' show OptionsDialogWidget; import 'options_dialog_widget.dart' show PopupWidget;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class OptionsDialogModel extends FlutterFlowModel<OptionsDialogWidget> { class OptionsDialogModel extends FlutterFlowModel<PopupWidget> {
/// State fields for stateful widgets in this component. /// State fields for stateful widgets in this component.
// State field(s) for MouseRegion widget. // State field(s) for MouseRegion widget.
@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import '/components/popup/popup_model.dart'; import '/components/popup/popup_model.dart';
export '/components/popup/popup_model.dart'; export '/components/popup/popup_model.dart';
@@ -78,20 +80,12 @@ class _PopupWidgetState extends State<PopupWidget> {
Row( Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
Expanded( const Expanded(
child: Padding( child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(0, 0, 12, 0), padding: EdgeInsetsDirectional.fromSTEB(0, 0, 12, 0),
child: Text( child: Text(
'Refine the components modal.', 'Refine the components modal.',
style: AppAppAppAppAppAppAppAppAppTheme style: AppTheme.headlineMedium,
.headlineMedium
.override(
fontFamily: 'Outfit',
color: const Color(0xFF14181B),
fontSize: 24,
letterSpacing: 0,
fontWeight: FontWeight.normal,
),
), ),
), ),
), ),
@@ -116,15 +110,9 @@ class _PopupWidgetState extends State<PopupWidget> {
thickness: 2, thickness: 2,
color: Color(0xFFF1F4F8), color: Color(0xFFF1F4F8),
), ),
Text( const Text(
'FlutterFlow is a visual development platform that allows you to easily create beautiful and responsive user interfaces for your mobile and web applications. With its drag-and-drop interface and pre-built components, you can quickly prototype and build your app without writing any code. \nAdditionally, FlutterFlow\'s real-time preview feature allows you to see your changes in real-time and make adjustments on the fly.', 'FlutterFlow is a visual development platform that allows you to easily create beautiful and responsive user interfaces for your mobile and web applications. With its drag-and-drop interface and pre-built components, you can quickly prototype and build your app without writing any code. \nAdditionally, FlutterFlow\'s real-time preview feature allows you to see your changes in real-time and make adjustments on the fly.',
style: AppAppAppAppAppAppAppAppAppTheme.labelMedium.override( style: AppTheme.labelMedium,
fontFamily: 'Readex Pro',
color: const Color(0xFF57636C),
fontSize: 14,
letterSpacing: 0,
fontWeight: FontWeight.normal,
),
), ),
Padding( Padding(
padding: const EdgeInsetsDirectional.fromSTEB(0, 16, 0, 0), padding: const EdgeInsetsDirectional.fromSTEB(0, 16, 0, 0),
@@ -144,14 +132,7 @@ class _PopupWidgetState extends State<PopupWidget> {
iconPadding: iconPadding:
const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
color: Colors.white, color: Colors.white,
textStyle: textStyle: AppTheme.bodySmall,
AppAppAppAppAppAppAppAppAppTheme.bodySmall.override(
fontFamily: 'Readex Pro',
color: const Color(0xFF14181B),
fontSize: 12,
letterSpacing: 0,
fontWeight: FontWeight.normal,
),
elevation: 0, elevation: 0,
borderSide: const BorderSide( borderSide: const BorderSide(
color: Color(0xFFF1F4F8), color: Color(0xFFF1F4F8),
@@ -174,15 +155,7 @@ class _PopupWidgetState extends State<PopupWidget> {
iconPadding: iconPadding:
const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
color: const Color(0xFF4B39EF), color: const Color(0xFF4B39EF),
textStyle: AppAppAppAppAppAppAppAppAppTheme textStyle: AppTheme.titleSmall,
.titleSmall
.override(
fontFamily: 'Readex Pro',
color: Colors.white,
fontSize: 16,
letterSpacing: 0,
fontWeight: FontWeight.w500,
),
elevation: 3, elevation: 3,
borderSide: const BorderSide( borderSide: const BorderSide(
color: Colors.transparent, color: Colors.transparent,
@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'popup_model.dart'; import 'popup_model.dart';
export 'popup_model.dart'; export 'popup_model.dart';
@@ -78,20 +80,12 @@ class _PopupWidgetState extends State<PopupWidget> {
Row( Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
Expanded( const Expanded(
child: Padding( child: Padding(
padding: const EdgeInsetsDirectional.fromSTEB(0, 0, 12, 0), padding: EdgeInsetsDirectional.fromSTEB(0, 0, 12, 0),
child: Text( child: Text(
'Refine the components modal.', 'Refine the components modal.',
style: AppAppAppAppAppAppAppAppAppTheme style: AppTheme.headlineMedium,
.headlineMedium
.override(
fontFamily: 'Outfit',
color: const Color(0xFF14181B),
fontSize: 24,
letterSpacing: 0,
fontWeight: FontWeight.normal,
),
), ),
), ),
), ),
@@ -116,15 +110,9 @@ class _PopupWidgetState extends State<PopupWidget> {
thickness: 2, thickness: 2,
color: Color(0xFFF1F4F8), color: Color(0xFFF1F4F8),
), ),
Text( const Text(
'FlutterFlow is a visual development platform that allows you to easily create beautiful and responsive user interfaces for your mobile and web applications. With its drag-and-drop interface and pre-built components, you can quickly prototype and build your app without writing any code. \nAdditionally, FlutterFlow\'s real-time preview feature allows you to see your changes in real-time and make adjustments on the fly.', 'FlutterFlow is a visual development platform that allows you to easily create beautiful and responsive user interfaces for your mobile and web applications. With its drag-and-drop interface and pre-built components, you can quickly prototype and build your app without writing any code. \nAdditionally, FlutterFlow\'s real-time preview feature allows you to see your changes in real-time and make adjustments on the fly.',
style: AppAppAppAppAppAppAppAppAppTheme.labelMedium.override( style: AppTheme.labelMedium,
fontFamily: 'Readex Pro',
color: const Color(0xFF57636C),
fontSize: 14,
letterSpacing: 0,
fontWeight: FontWeight.normal,
),
), ),
Padding( Padding(
padding: const EdgeInsetsDirectional.fromSTEB(0, 16, 0, 0), padding: const EdgeInsetsDirectional.fromSTEB(0, 16, 0, 0),
@@ -144,14 +132,7 @@ class _PopupWidgetState extends State<PopupWidget> {
iconPadding: iconPadding:
const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
color: Colors.white, color: Colors.white,
textStyle: textStyle: AppTheme.bodySmall,
AppAppAppAppAppAppAppAppAppTheme.bodySmall.override(
fontFamily: 'Readex Pro',
color: const Color(0xFF14181B),
fontSize: 12,
letterSpacing: 0,
fontWeight: FontWeight.normal,
),
elevation: 0, elevation: 0,
borderSide: const BorderSide( borderSide: const BorderSide(
color: Color(0xFFF1F4F8), color: Color(0xFFF1F4F8),
@@ -174,15 +155,7 @@ class _PopupWidgetState extends State<PopupWidget> {
iconPadding: iconPadding:
const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
color: const Color(0xFF4B39EF), color: const Color(0xFF4B39EF),
textStyle: AppAppAppAppAppAppAppAppAppTheme textStyle: AppTheme.titleSmall,
.titleSmall
.override(
fontFamily: 'Readex Pro',
color: Colors.white,
fontSize: 16,
letterSpacing: 0,
fontWeight: FontWeight.w500,
),
elevation: 3, elevation: 3,
borderSide: const BorderSide( borderSide: const BorderSide(
color: Colors.transparent, color: Colors.transparent,
@@ -4,6 +4,8 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'prompt_box_model.dart'; import 'prompt_box_model.dart';
export 'prompt_box_model.dart'; export 'prompt_box_model.dart';
@@ -45,7 +47,7 @@ class _PromptBoxWidgetState extends State<PromptBoxWidget> {
child: Container( child: Container(
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppAppAppAppAppAppAppAppAppTheme.secondaryBackground, color: AppTheme.secondaryBackground,
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
), ),
alignment: const AlignmentDirectional(0, 0), alignment: const AlignmentDirectional(0, 0),
@@ -65,9 +67,9 @@ class _PromptBoxWidgetState extends State<PromptBoxWidget> {
borderRadius: 30, borderRadius: 30,
borderWidth: 1, borderWidth: 1,
buttonSize: 40, buttonSize: 40,
icon: Icon( icon: const Icon(
Icons.file_upload_outlined, Icons.file_upload_outlined,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 30, size: 30,
), ),
onPressed: () { onPressed: () {
@@ -84,9 +86,9 @@ class _PromptBoxWidgetState extends State<PromptBoxWidget> {
borderRadius: 30, borderRadius: 30,
borderWidth: 1, borderWidth: 1,
buttonSize: 40, buttonSize: 40,
icon: Icon( icon: const Icon(
Icons.photo_outlined, Icons.photo_outlined,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 30, size: 30,
), ),
onPressed: () { onPressed: () {
@@ -103,9 +105,9 @@ class _PromptBoxWidgetState extends State<PromptBoxWidget> {
borderRadius: 30, borderRadius: 30,
borderWidth: 1, borderWidth: 1,
buttonSize: 40, buttonSize: 40,
icon: Icon( icon: const Icon(
Icons.mic_none, Icons.mic_none,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 30, size: 30,
), ),
onPressed: () { onPressed: () {
@@ -122,9 +124,9 @@ class _PromptBoxWidgetState extends State<PromptBoxWidget> {
borderRadius: 30, borderRadius: 30,
borderWidth: 1, borderWidth: 1,
buttonSize: 40, buttonSize: 40,
icon: Icon( icon: const Icon(
Icons.videocam_outlined, Icons.videocam_outlined,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 30, size: 30,
), ),
onPressed: () { onPressed: () {
@@ -141,9 +143,9 @@ class _PromptBoxWidgetState extends State<PromptBoxWidget> {
borderRadius: 30, borderRadius: 30,
borderWidth: 1, borderWidth: 1,
buttonSize: 40, buttonSize: 40,
icon: Icon( icon: const Icon(
Icons.camera_alt_outlined, Icons.camera_alt_outlined,
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
size: 30, size: 30,
), ),
onPressed: () { onPressed: () {
@@ -175,16 +177,10 @@ class _PromptBoxWidgetState extends State<PromptBoxWidget> {
obscureText: false, obscureText: false,
decoration: InputDecoration( decoration: InputDecoration(
isDense: false, isDense: false,
counterStyle: AppAppAppAppAppAppAppAppAppTheme counterStyle: AppTheme.bodyMedium,
.bodyMedium
.override(
fontFamily: 'Readex Pro',
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText,
letterSpacing: 0,
),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderSide: BorderSide( borderSide: const BorderSide(
color: AppAppAppAppAppAppAppAppAppTheme.secondaryText, color: AppTheme.secondaryText,
width: 2, width: 2,
), ),
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
@@ -211,19 +207,14 @@ class _PromptBoxWidgetState extends State<PromptBoxWidget> {
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
), ),
filled: true, filled: true,
fillColor: AppAppAppAppAppAppAppAppAppTheme.alternate, fillColor: AppTheme.alternate,
suffixIcon: Icon( suffixIcon: const Icon(
Icons.send, Icons.send,
color: AppAppAppAppAppAppAppAppAppTheme.primary, color: AppTheme.primary,
size: 30, size: 30,
), ),
), ),
style: AppAppAppAppAppAppAppAppAppTheme.bodyMedium.override( style: AppTheme.bodyMedium,
fontFamily: 'Lato',
fontSize: 14,
letterSpacing: 0,
fontWeight: FontWeight.normal,
),
textAlign: TextAlign.start, textAlign: TextAlign.start,
maxLines: 5, maxLines: 5,
minLines: 1, minLines: 1,
+22 -20
View File
@@ -6,7 +6,7 @@ import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '/theme.dart'; import 'package:app/theme.dart';
import 'conversation_model.dart'; import 'conversation_model.dart';
export 'conversation_model.dart'; export 'conversation_model.dart';
@@ -44,37 +44,39 @@ class _ConversationWidgetState extends State<ConversationWidget> {
: FocusScope.of(context).unfocus(), : FocusScope.of(context).unfocus(),
child: Scaffold( child: Scaffold(
key: scaffoldKey, key: scaffoldKey,
backgroundColor: myAppTheme.of(context).secondaryBackground, backgroundColor: AppTheme.secondaryBackground,
appBar: AppBar( appBar: AppBar(
backgroundColor: myAppTheme.of(context).primaryBackground, backgroundColor: AppTheme.primaryBackground,
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
leading: FlutterFlowIconButton( leading: FlutterFlowIconButton(
borderColor: Colors.transparent, borderColor: Colors.transparent,
borderRadius: 30, borderRadius: 30,
borderWidth: 1, borderWidth: 1,
buttonSize: 60, buttonSize: 60,
icon: Icon( icon: const Icon(
Icons.arrow_back_rounded, Icons.arrow_back_rounded,
color: AppTheme.primaryText, color: AppTheme.primaryTextColor,
size: 30, size: 30,
), ),
onPressed: () async { onPressed: () async {
context.goNamed( print("something pressed in conversation_widget.dart");
'ConversationsList', // TODO
extra: <String, dynamic>{ // context.goNamed(
kTransitionInfoKey: TransitionInfo( // 'ConversationsList',
hasTransition: true, // extra: <String, dynamic>{
transitionType: PageTransitionType.leftToRight, // kTransitionInfoKey: TransitionInfo(
duration: const Duration(milliseconds: 250), // hasTransition: true,
), // transitionType: PageTransitionType.leftToRight,
}, // duration: const Duration(milliseconds: 250),
); // ),
// },
// );
}, },
), ),
title: wrapWithModel( title: wrapWithModel(
model: _model.modelItemModel, model: _model.modelItemModel,
updateCallback: () => setState(() {}), updateCallback: () => setState(() {}),
child: ModelItemWidget(), child: const ModelItemWidget(),
), ),
actions: [ actions: [
Padding( Padding(
@@ -85,9 +87,9 @@ class _ConversationWidgetState extends State<ConversationWidget> {
borderWidth: 2, borderWidth: 2,
buttonSize: 40, buttonSize: 40,
fillColor: AppTheme.primaryBackground, fillColor: AppTheme.primaryBackground,
icon: Icon( icon: const Icon(
Icons.more_vert, Icons.more_vert,
color: AppTheme.primaryText, color: AppTheme.primaryTextColor,
size: 24, size: 24,
), ),
onPressed: () async { onPressed: () async {
@@ -104,7 +106,7 @@ class _ConversationWidgetState extends State<ConversationWidget> {
: FocusScope.of(context).unfocus(), : FocusScope.of(context).unfocus(),
child: Padding( child: Padding(
padding: MediaQuery.viewInsetsOf(context), padding: MediaQuery.viewInsetsOf(context),
child: ConversationDetailsOverlayWidget(), child: const ConversationDetailsOverlayWidget(),
), ),
); );
}, },
@@ -121,7 +123,7 @@ class _ConversationWidgetState extends State<ConversationWidget> {
child: wrapWithModel( child: wrapWithModel(
model: _model.conversationThreadModel, model: _model.conversationThreadModel,
updateCallback: () => setState(() {}), updateCallback: () => setState(() {}),
child: ConversationThreadWidget(), child: const ConversationThreadWidget(),
), ),
), ),
), ),
@@ -1,9 +1,13 @@
import 'dart:nativewrappers/_internal/vm/lib/internal_patch.dart';
import '/components/conversation_options/conversation_options_widget.dart'; import '/components/conversation_options/conversation_options_widget.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'conversations_list_model.dart'; import 'conversations_list_model.dart';
export 'conversations_list_model.dart'; export 'conversations_list_model.dart';
@@ -60,21 +64,26 @@ class _ConversationsListWidgetState extends State<ConversationsListWidget> {
: FocusScope.of(context).unfocus(), : FocusScope.of(context).unfocus(),
child: Padding( child: Padding(
padding: MediaQuery.viewInsetsOf(context), padding: MediaQuery.viewInsetsOf(context),
child: ConversationOptionsWidget(), child: const ConversationOptionsWidget(),
), ),
); );
}, },
).then((value) => safeSetState(() {})); ).then((value) => safeSetState(() {}));
context.pushNamed('Conversation'); // TODO
//context.pushNamed('Conversation');
}, },
child: FloatingActionButton( child: FloatingActionButton(
onPressed: () async { // TODO
context.pushNamed('Conversation'); // onPressed: () async {
// context.pushNamed('Conversation');
// },
onPressed: () {
print("fab pressed");
}, },
backgroundColor: AppTheme.primary, backgroundColor: AppTheme.primary,
elevation: 8, elevation: 8,
child: Icon( child: const Icon(
Icons.add, Icons.add,
color: AppTheme.info, color: AppTheme.info,
size: 24, size: 24,
@@ -84,12 +93,9 @@ class _ConversationsListWidgetState extends State<ConversationsListWidget> {
appBar: AppBar( appBar: AppBar(
backgroundColor: AppTheme.secondaryBackground, backgroundColor: AppTheme.secondaryBackground,
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
title: Text( title: const Text(
'My Chats', 'My Chats',
style: AppTheme.headlineLarge.override( style: AppTheme.headlineLarge,
fontFamily: 'Outfit',
letterSpacing: 0,
),
), ),
actions: const [], actions: const [],
centerTitle: false, centerTitle: false,
@@ -101,14 +107,11 @@ class _ConversationsListWidgetState extends State<ConversationsListWidget> {
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Padding( const Padding(
padding: const EdgeInsetsDirectional.fromSTEB(16, 0, 0, 0), padding: EdgeInsetsDirectional.fromSTEB(16, 0, 0, 0),
child: Text( child: Text(
'AI conversations', 'AI conversations',
style: AppTheme.labelMedium.override( style: AppTheme.labelMedium,
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
), ),
), ),
Expanded( Expanded(
@@ -126,9 +129,10 @@ class _ConversationsListWidgetState extends State<ConversationsListWidget> {
focusColor: Colors.transparent, focusColor: Colors.transparent,
hoverColor: Colors.transparent, hoverColor: Colors.transparent,
highlightColor: Colors.transparent, highlightColor: Colors.transparent,
onTap: () async { // TODO
context.pushNamed('Conversation'); // onTap: () async {
}, // context.pushNamed('Conversation');
// },
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@@ -137,12 +141,12 @@ class _ConversationsListWidgetState extends State<ConversationsListWidget> {
Container( Container(
width: 100, width: 100,
height: 100, height: 100,
decoration: BoxDecoration( decoration: const BoxDecoration(
color: AppTheme color: AppTheme
.secondaryBackground, .secondaryBackground,
), ),
child: Align( child: const Align(
alignment: const AlignmentDirectional(0, 0), alignment: AlignmentDirectional(0, 0),
child: Icon( child: Icon(
Icons.settings_outlined, Icons.settings_outlined,
color: AppTheme color: AppTheme
@@ -161,12 +165,12 @@ class _ConversationsListWidgetState extends State<ConversationsListWidget> {
minWidth: minWidth:
MediaQuery.sizeOf(context).width, MediaQuery.sizeOf(context).width,
), ),
decoration: BoxDecoration( decoration: const BoxDecoration(
color: AppTheme color: AppTheme
.secondaryBackground, .secondaryBackground,
shape: BoxShape.rectangle, shape: BoxShape.rectangle,
), ),
child: Column( child: const Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
@@ -175,40 +179,27 @@ class _ConversationsListWidgetState extends State<ConversationsListWidget> {
children: [ children: [
Align( Align(
alignment: alignment:
const AlignmentDirectional(-1, 0), AlignmentDirectional(-1, 0),
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
Text( Text(
'Hello World', 'Hello World',
style: style: AppTheme.headlineLarge,
AppTheme
.headlineLarge
.override(
fontFamily: 'Outfit',
letterSpacing: 0,
),
), ),
], ],
), ),
), ),
Align( Align(
alignment: alignment:
const AlignmentDirectional(-1, 0), AlignmentDirectional(-1, 0),
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
'Hello World', 'Hello World',
style: FlutterFlowAppTheme.of( style: AppTheme.bodyMedium,
context)
.bodyMedium
.override(
fontFamily:
'Readex Pro',
letterSpacing: 0,
),
), ),
), ),
], ],
@@ -222,11 +213,11 @@ class _ConversationsListWidgetState extends State<ConversationsListWidget> {
Container( Container(
width: 100, width: 100,
height: 100, height: 100,
decoration: BoxDecoration( decoration: const BoxDecoration(
color: AppTheme color: AppTheme
.secondaryBackground, .secondaryBackground,
), ),
child: Icon( child: const Icon(
Icons.chevron_right_rounded, Icons.chevron_right_rounded,
color: AppTheme color: AppTheme
.secondaryText, .secondaryText,
+15 -30
View File
@@ -6,6 +6,7 @@ import 'package:flutter_animate/flutter_animate.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'image_details_model.dart'; import 'image_details_model.dart';
export 'image_details_model.dart'; export 'image_details_model.dart';
@@ -106,19 +107,20 @@ class _ImageDetailsWidgetState extends State<ImageDetailsWidget>
appBar: AppBar( appBar: AppBar(
backgroundColor: AppTheme.secondaryBackground, backgroundColor: AppTheme.secondaryBackground,
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
leading: FlutterFlowIconButton( leading: const FlutterFlowIconButton(
borderColor: Colors.transparent, borderColor: Colors.transparent,
borderRadius: 30, borderRadius: 30,
borderWidth: 1, borderWidth: 1,
buttonSize: 60, buttonSize: 60,
icon: Icon( icon: Icon(
Icons.arrow_back_rounded, Icons.arrow_back_rounded,
color: AppTheme.primaryText, color: AppTheme.primaryTextColor,
size: 30, size: 30,
), ),
onPressed: () async { // TODO
context.pop(); // onPressed: () async {
}, // context.pop();
// },
), ),
actions: const [], actions: const [],
centerTitle: false, centerTitle: false,
@@ -199,47 +201,30 @@ class _ImageDetailsWidgetState extends State<ImageDetailsWidget>
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
SelectionArea( const SelectionArea(
child: AutoSizeText( child: AutoSizeText(
'Thanks so much! We really do appreciate it!', 'Thanks so much! We really do appreciate it!',
textAlign: TextAlign.start, textAlign: TextAlign.start,
style: AppTheme style: AppTheme.bodyMedium,
.bodyMedium
.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
lineHeight: 1.5,
),
)), )),
Padding( const Padding(
padding: const EdgeInsetsDirectional.fromSTEB( padding: EdgeInsetsDirectional.fromSTEB(
0, 4, 0, 0), 0, 4, 0, 0),
child: Text( child: Text(
'Just Now', 'Just Now',
style: AppTheme style: AppTheme.labelSmall,
.labelSmall
.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
), ),
), ),
].divide(const SizedBox(width: 4)), ].divide(const SizedBox(width: 4)),
), ),
Padding( const Padding(
padding: padding:
const EdgeInsetsDirectional.fromSTEB(0, 4, 0, 0), EdgeInsetsDirectional.fromSTEB(0, 4, 0, 0),
child: SelectionArea( child: SelectionArea(
child: AutoSizeText( child: AutoSizeText(
'Thanks so much! We really do appreciate it!', 'Thanks so much! We really do appreciate it!',
textAlign: TextAlign.start, textAlign: TextAlign.start,
style: AppTheme style: AppTheme.labelLarge,
.labelLarge
.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
lineHeight: 1.5,
),
)), )),
), ),
], ],
File diff suppressed because it is too large Load Diff
+19 -36
View File
@@ -4,6 +4,8 @@ import 'package:flutter_animate/flutter_animate.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:app/theme.dart';
import 'setup_model.dart'; import 'setup_model.dart';
export 'setup_model.dart'; export 'setup_model.dart';
@@ -155,30 +157,30 @@ class _SetupWidgetState extends State<SetupWidget>
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: 500, height: 500,
decoration: BoxDecoration( decoration: const BoxDecoration(
gradient: LinearGradient( gradient: LinearGradient(
colors: [ colors: [
AppTheme.primary, AppTheme.primary,
AppTheme.error, AppTheme.error,
AppTheme.tertiary AppTheme.tertiary
], ],
stops: const [0, 0.5, 1], stops: [0, 0.5, 1],
begin: const AlignmentDirectional(-1, -1), begin: AlignmentDirectional(-1, -1),
end: const AlignmentDirectional(1, 1), end: AlignmentDirectional(1, 1),
), ),
), ),
child: Container( child: Container(
width: 100, width: 100,
height: 100, height: 100,
decoration: BoxDecoration( decoration: const BoxDecoration(
gradient: LinearGradient( gradient: LinearGradient(
colors: [ colors: [
const Color(0x00FFFFFF), Color(0x00FFFFFF),
AppTheme.secondaryBackground AppTheme.secondaryBackground
], ],
stops: const [0, 1], stops: [0, 1],
begin: const AlignmentDirectional(0, -1), begin: AlignmentDirectional(0, -1),
end: const AlignmentDirectional(0, 1), end: AlignmentDirectional(0, 1),
), ),
), ),
child: Column( child: Column(
@@ -188,7 +190,7 @@ class _SetupWidgetState extends State<SetupWidget>
Container( Container(
width: 120, width: 120,
height: 120, height: 120,
decoration: BoxDecoration( decoration: const BoxDecoration(
color: AppTheme.accent4, color: AppTheme.accent4,
shape: BoxShape.circle, shape: BoxShape.circle,
), ),
@@ -205,27 +207,18 @@ class _SetupWidgetState extends State<SetupWidget>
animationsMap['containerOnPageLoadAnimation2']!), animationsMap['containerOnPageLoadAnimation2']!),
Padding( Padding(
padding: const EdgeInsetsDirectional.fromSTEB(0, 44, 0, 0), padding: const EdgeInsetsDirectional.fromSTEB(0, 44, 0, 0),
child: Text( child: const Text(
'Welcome!', 'Welcome!',
style: AppTheme style: AppTheme.displaySmall,
.displaySmall
.override(
fontFamily: 'Outfit',
letterSpacing: 0,
),
).animateOnPageLoad( ).animateOnPageLoad(
animationsMap['textOnPageLoadAnimation1']!), animationsMap['textOnPageLoadAnimation1']!),
), ),
Padding( Padding(
padding: const EdgeInsetsDirectional.fromSTEB(44, 8, 44, 0), padding: const EdgeInsetsDirectional.fromSTEB(44, 8, 44, 0),
child: Text( child: const Text(
'Thanks for joining! Access or create your account below, and get started on your journey!', 'Thanks for joining! Access or create your account below, and get started on your journey!',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: style: AppTheme.labelMedium,
AppTheme.labelMedium.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
).animateOnPageLoad( ).animateOnPageLoad(
animationsMap['textOnPageLoadAnimation2']!), animationsMap['textOnPageLoadAnimation2']!),
), ),
@@ -258,13 +251,9 @@ class _SetupWidgetState extends State<SetupWidget>
const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
color: AppTheme color: AppTheme
.secondaryBackground, .secondaryBackground,
textStyle: textStyle: AppTheme.bodyLarge,
AppTheme.bodyLarge.override(
fontFamily: 'Readex Pro',
letterSpacing: 0,
),
elevation: 0, elevation: 0,
borderSide: BorderSide( borderSide: const BorderSide(
color: AppTheme.alternate, color: AppTheme.alternate,
width: 2, width: 2,
), ),
@@ -291,13 +280,7 @@ class _SetupWidgetState extends State<SetupWidget>
iconPadding: iconPadding:
const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0), const EdgeInsetsDirectional.fromSTEB(0, 0, 0, 0),
color: AppTheme.primary, color: AppTheme.primary,
textStyle: AppTheme textStyle: AppTheme.titleSmall,
.titleSmall
.override(
fontFamily: 'Readex Pro',
color: Colors.white,
letterSpacing: 0,
),
elevation: 3, elevation: 3,
borderSide: const BorderSide( borderSide: const BorderSide(
color: Colors.transparent, color: Colors.transparent,
@@ -131,11 +131,11 @@ class _SupportFormWidgetState extends State<SupportFormWidget>
buttonSize: 60, buttonSize: 60,
icon: const Icon( icon: const Icon(
Icons.arrow_back_rounded, Icons.arrow_back_rounded,
color: AppTheme.primaryText, color: AppTheme.primaryTextColor,
size: 30, size: 30,
), ),
onPressed: () async { onPressed: () async {
context.pop(); //TODO: context.pop();
}, },
), ),
title: const Text( title: const Text(
+15 -2
View File
@@ -6,19 +6,32 @@ class AppTheme {
static const tertiary = Colors.white; static const tertiary = Colors.white;
static const alternate = Colors.purple; static const alternate = Colors.purple;
static const accent1 = Colors.amber;
static const accent4 = Colors.amber;
static const primaryBackground = Colors.purple; static const primaryBackground = Colors.purple;
static const secondaryBackground = Colors.purpleAccent; static const secondaryBackground = Colors.purpleAccent;
static const primaryText = Colors.white; static const primaryTextColor = Colors.white;
static const primaryText = TextStyle(color: primaryTextColor, fontSize: 12);
static const secondaryText = Colors.white; static const secondaryText = Colors.white;
static const bodyLarge = TextStyle(color: Colors.white, fontSize: 24);
static const bodyMedium = TextStyle(color: Colors.white, fontSize: 12); static const bodyMedium = TextStyle(color: Colors.white, fontSize: 12);
static const bodySmall = TextStyle(color: Colors.white, fontSize: 10);
static const error = Colors.red; static const error = Colors.red;
static const info = Colors.grey;
static const displaySmall = TextStyle(color: Colors.white, fontSize: 12);
static const labelMedium = TextStyle(color: Colors.grey, fontSize: 16);
static const labelLarge = TextStyle(color: Colors.black, fontSize: 24); static const labelLarge = TextStyle(color: Colors.black, fontSize: 24);
static const labelMedium = TextStyle(color: Colors.grey, fontSize: 16);
static const labelSmall = TextStyle(color: Colors.grey, fontSize: 12);
static const headlineLarge = TextStyle(color: Colors.blue, fontWeight: FontWeight.bold);
static const headlineMedium = TextStyle(color: Colors.blue, fontWeight: FontWeight.bold); static const headlineMedium = TextStyle(color: Colors.blue, fontWeight: FontWeight.bold);
static const headlineSmall = TextStyle(color: Colors.blue, fontWeight: FontWeight.bold);
static const titleLarge = TextStyle(fontFamily: 'Outfit', letterSpacing: 0, fontSize: 24); static const titleLarge = TextStyle(fontFamily: 'Outfit', letterSpacing: 0, fontSize: 24);
static const titleSmall = TextStyle(fontFamily: 'Outfit', letterSpacing: 0, fontSize: 16); static const titleSmall = TextStyle(fontFamily: 'Outfit', letterSpacing: 0, fontSize: 16);
@@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig"
@@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig"
@@ -10,6 +10,7 @@ import rive_common
import shared_preferences_foundation import shared_preferences_foundation
import sqflite import sqflite
import url_launcher_macos import url_launcher_macos
import video_player_avfoundation
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
@@ -17,4 +18,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
} }
+43
View File
@@ -0,0 +1,43 @@
platform :osx, '10.14'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_macos_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_macos_build_settings(target)
end
end
+52 -12
View File
@@ -524,18 +524,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.0.4" version: "10.0.5"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.3" version: "3.0.5"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
@@ -572,10 +572,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.8.0" version: "0.11.1"
maybe_just_nothing: maybe_just_nothing:
dependency: transitive dependency: transitive
description: description:
@@ -588,10 +588,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" sha256: "25dfcaf170a0190f47ca6355bdd4552cb8924b430512ff0cafb8db9bd41fe33b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.12.0" version: "1.14.0"
mime_type: mime_type:
dependency: transitive dependency: transitive
description: description:
@@ -1001,10 +1001,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" sha256: "2419f20b0c8677b2d67c8ac4d1ac7372d862dc6c460cdbb052b40155408cd794"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.0" version: "0.7.1"
timeago: timeago:
dependency: transitive dependency: transitive
description: description:
@@ -1101,14 +1101,54 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.4" version: "2.1.4"
video_player:
dependency: "direct main"
description:
name: video_player
sha256: e30df0d226c4ef82e2c150ebf6834b3522cf3f654d8e2f9419d376cdc071425d
url: "https://pub.dev"
source: hosted
version: "2.9.1"
video_player_android:
dependency: transitive
description:
name: video_player_android
sha256: fdc0331ce9f808cc2714014cb8126bd6369943affefd54f8fdab0ea0bb617b7f
url: "https://pub.dev"
source: hosted
version: "2.5.2"
video_player_avfoundation:
dependency: transitive
description:
name: video_player_avfoundation
sha256: d1e9a824f2b324000dc8fb2dcb2a3285b6c1c7c487521c63306cc5b394f68a7c
url: "https://pub.dev"
source: hosted
version: "2.6.1"
video_player_platform_interface:
dependency: transitive
description:
name: video_player_platform_interface
sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6"
url: "https://pub.dev"
source: hosted
version: "6.2.2"
video_player_web:
dependency: transitive
description:
name: video_player_web
sha256: ff4d69a6614b03f055397c27a71c9d3ddea2b2a23d71b2ba0164f59ca32b8fe2
url: "https://pub.dev"
source: hosted
version: "2.3.1"
vm_service: vm_service:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" sha256: "7475cb4dd713d57b6f7464c0e13f06da0d535d8b2067e188962a59bac2cf280b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.2.1" version: "14.2.2"
web: web:
dependency: transitive dependency: transitive
description: description:
+1
View File
@@ -43,6 +43,7 @@ dependencies:
google_fonts: any google_fonts: any
provider: any provider: any
easy_debounce: any easy_debounce: any
video_player: ^2.9.1
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
Submodule
+1
Submodule one-ai-mobile added at dd29a001e9
View File