HTML component test + responsive test
This commit is contained in:
parent
2b9e609599
commit
2bef54f267
@ -3,10 +3,11 @@ import 'dart:convert';
|
|||||||
import 'package:auto_size_text/auto_size_text.dart';
|
import 'package:auto_size_text/auto_size_text.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:manager_app/Components/multi_input_modal.dart';
|
import 'package:manager_app/Components/multi_input_modal.dart';
|
||||||
|
import 'package:manager_app/Components/multi_string_input_html_modal.dart';
|
||||||
import 'package:manager_app/constants.dart';
|
import 'package:manager_app/constants.dart';
|
||||||
import 'package:manager_api_new/api.dart';
|
import 'package:manager_api_new/api.dart';
|
||||||
|
|
||||||
class MultiStringContainer extends StatelessWidget {
|
class MultiStringInputContainer extends StatelessWidget {
|
||||||
final Color color;
|
final Color color;
|
||||||
final String label;
|
final String label;
|
||||||
final String modalLabel;
|
final String modalLabel;
|
||||||
@ -15,8 +16,9 @@ class MultiStringContainer extends StatelessWidget {
|
|||||||
final int maxLines;
|
final int maxLines;
|
||||||
final bool isTitle;
|
final bool isTitle;
|
||||||
final bool isAudio;
|
final bool isAudio;
|
||||||
|
final bool isHTML;
|
||||||
final double fontSize;
|
final double fontSize;
|
||||||
const MultiStringContainer({
|
const MultiStringInputContainer({
|
||||||
Key? key,
|
Key? key,
|
||||||
this.color = kSecond,
|
this.color = kSecond,
|
||||||
required this.label,
|
required this.label,
|
||||||
@ -26,6 +28,7 @@ class MultiStringContainer extends StatelessWidget {
|
|||||||
required this.maxLines,
|
required this.maxLines,
|
||||||
required this.isTitle,
|
required this.isTitle,
|
||||||
this.isAudio = false,
|
this.isAudio = false,
|
||||||
|
this.isHTML = false,
|
||||||
this.fontSize = 25,
|
this.fontSize = 25,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@ -68,7 +71,11 @@ class MultiStringContainer extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if(isHTML) {
|
||||||
|
showMultiStringInputHTML(label, modalLabel, isTitle, initials, newValues, onGetResult, maxLines, isAudio, context);
|
||||||
|
} else {
|
||||||
showMultiStringInput(label, modalLabel, isTitle, initials, newValues, onGetResult, maxLines, isAudio, context);
|
showMultiStringInput(label, modalLabel, isTitle, initials, newValues, onGetResult, maxLines, isAudio, context);
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
|
|||||||
226
lib/Components/multi_string_input_html_modal.dart
Normal file
226
lib/Components/multi_string_input_html_modal.dart
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
import 'dart:ui';
|
||||||
|
|
||||||
|
import 'package:auto_size_text/auto_size_text.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:manager_app/Components/rounded_button.dart';
|
||||||
|
import 'package:manager_app/Components/text_form_input_container.dart';
|
||||||
|
import 'package:manager_app/Models/managerContext.dart';
|
||||||
|
import 'package:manager_app/Screens/Resources/select_resource_modal.dart';
|
||||||
|
import 'package:manager_app/app_context.dart';
|
||||||
|
import 'package:manager_app/constants.dart';
|
||||||
|
import 'package:manager_api_new/api.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:quill_html_editor/quill_html_editor.dart';
|
||||||
|
|
||||||
|
import 'audio_input_container.dart';
|
||||||
|
|
||||||
|
|
||||||
|
showMultiStringInputHTML (String label, String modalLabel, bool isTitle, List<TranslationDTO> values, List<TranslationDTO> newValues, Function onGetResult, int maxLines, bool isAudio, BuildContext context) { /*Function onSelect,*/
|
||||||
|
QuillEditorController controllerQuill = QuillEditorController();
|
||||||
|
showDialog(
|
||||||
|
builder: (BuildContext context) => AlertDialog(
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(20.0))
|
||||||
|
),
|
||||||
|
title: Center(child: Text(modalLabel)),
|
||||||
|
content: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: getTranslations(context, Provider.of<AppContext>(context), controllerQuill, label, isTitle, isAudio, newValues),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
/*Container(
|
||||||
|
width: 500,
|
||||||
|
height: 200,
|
||||||
|
child: TranslationTab(
|
||||||
|
translations: newValues,
|
||||||
|
maxLines: maxLines
|
||||||
|
)
|
||||||
|
),*/
|
||||||
|
/*Column(
|
||||||
|
children: showValues(newValues),
|
||||||
|
),*/
|
||||||
|
],
|
||||||
|
)
|
||||||
|
),
|
||||||
|
actions: <Widget>[
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 180,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Annuler",
|
||||||
|
icon: Icons.undo,
|
||||||
|
color: kSecond,
|
||||||
|
press: () {
|
||||||
|
onGetResult(values);
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: 180,
|
||||||
|
height: 70,
|
||||||
|
child: RoundedButton(
|
||||||
|
text: "Valider",
|
||||||
|
icon: Icons.check,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
textColor: kWhite,
|
||||||
|
press: () {
|
||||||
|
Function deepEq = const DeepCollectionEquality().equals;
|
||||||
|
if (!deepEq(values, newValues)) {
|
||||||
|
onGetResult(newValues);
|
||||||
|
}
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
fontSize: 20,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
), context: context
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
getTranslations(BuildContext context, AppContext appContext, QuillEditorController controllerQuill, String label, bool isTitle, bool isAudio, List<TranslationDTO> newValues) {
|
||||||
|
List<Widget> translations = <Widget>[];
|
||||||
|
ManagerAppContext managerAppContext = appContext.getContext();
|
||||||
|
var language = managerAppContext.selectedConfiguration!.languages![0];
|
||||||
|
//for(var language in managerAppContext.selectedConfiguration!.languages!) {
|
||||||
|
translations.add(
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width *0.05,
|
||||||
|
height: MediaQuery.of(context).size.height *0.10,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border(
|
||||||
|
right: BorderSide(width: 1.5, color: kSecond),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Center(child: AutoSizeText(language.toUpperCase()))
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 8.0),
|
||||||
|
child: Container(
|
||||||
|
width: MediaQuery.of(context).size.width *0.5,
|
||||||
|
height: MediaQuery.of(context).size.height *0.5,
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
!isAudio ?
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
ToolBar(
|
||||||
|
toolBarColor: Colors.cyan.shade50,
|
||||||
|
activeIconColor: Colors.green,
|
||||||
|
padding: const EdgeInsets.all(8),
|
||||||
|
iconSize: 20,
|
||||||
|
controller: controllerQuill,
|
||||||
|
customButtons: [
|
||||||
|
InkWell(onTap: () {}, child: const Icon(Icons.favorite)),
|
||||||
|
InkWell(onTap: () {}, child: const Icon(Icons.add_circle)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
QuillHtmlEditor(
|
||||||
|
text: newValues.where((element) => element.language == language).first.value!,
|
||||||
|
hintText: 'Hint text goes here',
|
||||||
|
controller: controllerQuill,
|
||||||
|
isEnabled: true,
|
||||||
|
minHeight: 300,
|
||||||
|
/*textStyle: _editorTextStyle,
|
||||||
|
hintTextStyle: _hintTextStyle,*/
|
||||||
|
hintTextAlign: TextAlign.start,
|
||||||
|
padding: const EdgeInsets.only(left: 10, top: 5),
|
||||||
|
hintTextPadding: EdgeInsets.zero,
|
||||||
|
backgroundColor: kSecond,
|
||||||
|
onFocusChanged: (hasFocus) => debugPrint('has focus $hasFocus'),
|
||||||
|
//onTextChanged: (text) => debugPrint('widget text change $text'),
|
||||||
|
onTextChanged: (value) {
|
||||||
|
newValues.where((element) => element.language == language).first.value = value;
|
||||||
|
},
|
||||||
|
onEditorCreated: () => debugPrint('Editor has been loaded'),
|
||||||
|
onEditorResized: (height) =>
|
||||||
|
debugPrint('Editor resized $height'),
|
||||||
|
onSelectionChanged: (sel) =>
|
||||||
|
debugPrint('${sel.index},${sel.length}')
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
/*HtmlEditor(
|
||||||
|
controller: controller,
|
||||||
|
htmlEditorOptions: HtmlEditorOptions(
|
||||||
|
hint: "Your text here...",
|
||||||
|
initialText: newValues.where((element) => element.language == language).first.value!,
|
||||||
|
shouldEnsureVisible: true,
|
||||||
|
),
|
||||||
|
htmlToolbarOptions: HtmlToolbarOptions(
|
||||||
|
toolbarPosition: ToolbarPosition.aboveEditor, //required to place toolbar anywhere!
|
||||||
|
//other options
|
||||||
|
),
|
||||||
|
otherOptions: OtherOptions(
|
||||||
|
height: 400,
|
||||||
|
),
|
||||||
|
)*/
|
||||||
|
/*TextFormInputContainer(
|
||||||
|
label: label,
|
||||||
|
color: kWhite,
|
||||||
|
isTitle: isTitle,
|
||||||
|
initialValue: newValues.where((element) => element.language == language).first.value!,
|
||||||
|
onChanged: (value) {
|
||||||
|
newValues.where((element) => element.language == language).first.value = value;
|
||||||
|
},
|
||||||
|
)*/ :
|
||||||
|
Container(
|
||||||
|
width: 250,
|
||||||
|
height: 120,
|
||||||
|
child: AudioInputContainer(
|
||||||
|
label: "Audio :",
|
||||||
|
initialValue: newValues.where((element) => element.language == language).first.value,
|
||||||
|
color: kPrimaryColor,
|
||||||
|
onChanged: (ResourceDTO resource) {
|
||||||
|
newValues.where((element) => element.language == language).first.value = resource.id;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
//}
|
||||||
|
return translations;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
showValues(List<TranslationDTO> newValues) {
|
||||||
|
List<Widget> valuesToShow = new List<Widget>();
|
||||||
|
newValues.forEach((newValue) {
|
||||||
|
valuesToShow.add(
|
||||||
|
new StringInputContainer(
|
||||||
|
color: Colors.lightBlue,
|
||||||
|
label: newValue.language,
|
||||||
|
initialValue: newValue.value,
|
||||||
|
onChanged: (String value) {
|
||||||
|
newValue.value = value;
|
||||||
|
},
|
||||||
|
));
|
||||||
|
});
|
||||||
|
return valuesToShow;
|
||||||
|
}*/
|
||||||
@ -79,7 +79,7 @@ class _ArticleConfigState extends State<ArticleConfig> {
|
|||||||
children: [
|
children: [
|
||||||
Column(
|
Column(
|
||||||
children: [
|
children: [
|
||||||
MultiStringContainer(
|
MultiStringInputContainer(
|
||||||
label: "Contenu affiché :",
|
label: "Contenu affiché :",
|
||||||
modalLabel: "Contenu",
|
modalLabel: "Contenu",
|
||||||
color: kPrimaryColor,
|
color: kPrimaryColor,
|
||||||
@ -112,7 +112,7 @@ class _ArticleConfigState extends State<ArticleConfig> {
|
|||||||
|
|
||||||
Column(
|
Column(
|
||||||
children: [
|
children: [
|
||||||
MultiStringContainer(
|
MultiStringInputContainer(
|
||||||
label: "Audio :",
|
label: "Audio :",
|
||||||
isAudio: true,
|
isAudio: true,
|
||||||
modalLabel: "Audio",
|
modalLabel: "Audio",
|
||||||
|
|||||||
@ -230,7 +230,7 @@ class _SectionDetailScreenState extends State<SectionDetailScreen> {
|
|||||||
sectionDTO!.label = value;
|
sectionDTO!.label = value;
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
MultiStringContainer(
|
MultiStringInputContainer(
|
||||||
label: "Titre affiché:",
|
label: "Titre affiché:",
|
||||||
modalLabel: "Titre",
|
modalLabel: "Titre",
|
||||||
color: kPrimaryColor,
|
color: kPrimaryColor,
|
||||||
@ -242,10 +242,11 @@ class _SectionDetailScreenState extends State<SectionDetailScreen> {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
|
isHTML: true,
|
||||||
isTitle: true,
|
isTitle: true,
|
||||||
),
|
),
|
||||||
if(!(appContext.getContext() as ManagerAppContext).selectedConfiguration!.isMobile!)
|
if(!(appContext.getContext() as ManagerAppContext).selectedConfiguration!.isMobile!)
|
||||||
MultiStringContainer(
|
MultiStringInputContainer(
|
||||||
label: "Description affichée:",
|
label: "Description affichée:",
|
||||||
modalLabel: "Description",
|
modalLabel: "Description",
|
||||||
color: kPrimaryColor,
|
color: kPrimaryColor,
|
||||||
|
|||||||
@ -265,7 +265,7 @@ class _ConfigurationDetailScreenState extends State<ConfigurationDetailScreen> {
|
|||||||
if(configurationDTO.isMobile!)
|
if(configurationDTO.isMobile!)
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(bottom: 15),
|
padding: const EdgeInsets.only(bottom: 15),
|
||||||
child: MultiStringContainer(
|
child: MultiStringInputContainer(
|
||||||
label: "Titre affiché:",
|
label: "Titre affiché:",
|
||||||
modalLabel: "Titre",
|
modalLabel: "Titre",
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
|
|||||||
@ -1,5 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:manager_app/Models/menu.dart';
|
||||||
|
import 'package:manager_app/Models/menuSection.dart';
|
||||||
import 'package:manager_app/Screens/Main/components/body.dart';
|
import 'package:manager_app/Screens/Main/components/body.dart';
|
||||||
|
import 'package:manager_app/constants.dart';
|
||||||
|
import 'package:responsive_framework/responsive_breakpoints.dart';
|
||||||
|
|
||||||
class MainScreen extends StatefulWidget {
|
class MainScreen extends StatefulWidget {
|
||||||
MainScreen({Key? key}) : super(key: key);
|
MainScreen({Key? key}) : super(key: key);
|
||||||
@ -11,8 +15,52 @@ class MainScreen extends StatefulWidget {
|
|||||||
class _MainScreenState extends State<MainScreen> {
|
class _MainScreenState extends State<MainScreen> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
if(ResponsiveBreakpoints.of(context).equals(DESKTOP)) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: Body(),
|
body: Body(),
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(title: Text("MyMuseum - Manager tablet and mobile mode"), backgroundColor: kPrimaryColor),
|
||||||
|
drawer: Drawer(
|
||||||
|
child: getMenu()
|
||||||
|
),
|
||||||
|
body: Body(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getMenu() {
|
||||||
|
//MenuSection devices = new MenuSection(name: "Test", type: "devices", order: 0);
|
||||||
|
MenuSection configurations = new MenuSection(name: "Visites", type: "configurations", order: 0);
|
||||||
|
MenuSection resources = new MenuSection(name: "Ressources", type: "resources", order: 1);
|
||||||
|
|
||||||
|
Menu menu = new Menu(title: "MyMuseum");
|
||||||
|
|
||||||
|
return ListView(
|
||||||
|
// Important: Remove any padding from the ListView.
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
children: [
|
||||||
|
DrawerHeader(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: kPrimaryColor,
|
||||||
|
),
|
||||||
|
child: Text(menu.title),
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
title: Text(configurations.name),
|
||||||
|
onTap: () {
|
||||||
|
// TODO Navigate to configurations screen (by route if possible)
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
title: Text(resources.name),
|
||||||
|
onTap: () {
|
||||||
|
// TODO Navigate to resources screen (by route if possible)
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ class LoginScreen extends StatefulWidget {
|
|||||||
class _LoginScreenState extends State<LoginScreen> {
|
class _LoginScreenState extends State<LoginScreen> {
|
||||||
String email = ""; // DEV "test@email.be"
|
String email = ""; // DEV "test@email.be"
|
||||||
String password = ""; // DEV = "kljqsdkljqsd"
|
String password = ""; // DEV = "kljqsdkljqsd"
|
||||||
String? host = "https://api.mymuseum.be"; // DEV = "http://192.168.31.96"
|
String? host = "https://api.mymuseum.be"; // DEV = "http://192.168.31.96" // http://localhost:5000 // https://api.mymuseum.be // myCore http://192.168.31.140:8089
|
||||||
Client? clientAPI;
|
Client? clientAPI;
|
||||||
bool isLoading = false;
|
bool isLoading = false;
|
||||||
bool isRememberMe = false;
|
bool isRememberMe = false;
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import 'package:manager_app/Models/managerContext.dart';
|
|||||||
import 'package:manager_app/Screens/Main/main_screen.dart';
|
import 'package:manager_app/Screens/Main/main_screen.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:responsive_framework/responsive_framework.dart';
|
||||||
import 'Helpers/FileHelper.dart';
|
import 'Helpers/FileHelper.dart';
|
||||||
import 'Models/session.dart';
|
import 'Models/session.dart';
|
||||||
import 'Screens/login_screen.dart';
|
import 'Screens/login_screen.dart';
|
||||||
@ -50,6 +51,15 @@ class _MyAppState extends State<MyApp> {
|
|||||||
return ChangeNotifierProvider<AppContext>(
|
return ChangeNotifierProvider<AppContext>(
|
||||||
create: (_) => AppContext(widget.managerAppContext),
|
create: (_) => AppContext(widget.managerAppContext),
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
|
builder: (context, child) => ResponsiveBreakpoints.builder(
|
||||||
|
child: child!,
|
||||||
|
breakpoints: [
|
||||||
|
const Breakpoint(start: 0, end: 450, name: MOBILE),
|
||||||
|
const Breakpoint(start: 451, end: 800, name: TABLET),
|
||||||
|
const Breakpoint(start: 801, end: 1920, name: DESKTOP),
|
||||||
|
const Breakpoint(start: 1921, end: double.infinity, name: '4K'),
|
||||||
|
],
|
||||||
|
),
|
||||||
scrollBehavior: MyCustomScrollBehavior(),
|
scrollBehavior: MyCustomScrollBehavior(),
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
title: 'MyMuseum - Manager',
|
title: 'MyMuseum - Manager',
|
||||||
@ -62,7 +72,7 @@ class _MyAppState extends State<MyApp> {
|
|||||||
primarySwatch: Colors.blue,
|
primarySwatch: Colors.blue,
|
||||||
scaffoldBackgroundColor: kBackgroundColor,
|
scaffoldBackgroundColor: kBackgroundColor,
|
||||||
//fontFamily: "Vollkorn",
|
//fontFamily: "Vollkorn",
|
||||||
textTheme: TextTheme(bodyText1: TextStyle(color: kBodyTextColor)),
|
textTheme: TextTheme(bodyLarge: TextStyle(color: kBodyTextColor)),
|
||||||
visualDensity: VisualDensity.adaptivePlatformDensity,
|
visualDensity: VisualDensity.adaptivePlatformDensity,
|
||||||
),
|
),
|
||||||
routes: {
|
routes: {
|
||||||
|
|||||||
156
pubspec.lock
156
pubspec.lock
@ -45,10 +45,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: async
|
name: async
|
||||||
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
|
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.10.0"
|
version: "2.11.0"
|
||||||
audio_session:
|
audio_session:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -149,10 +149,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: characters
|
name: characters
|
||||||
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
|
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.3.0"
|
||||||
checked_yaml:
|
checked_yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -181,10 +181,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
|
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.17.0"
|
version: "1.17.2"
|
||||||
convert:
|
convert:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -302,6 +302,54 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.1"
|
version: "0.6.1"
|
||||||
|
flutter_keyboard_visibility:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_keyboard_visibility
|
||||||
|
sha256: "4983655c26ab5b959252ee204c2fffa4afeb4413cd030455194ec0caa3b8e7cb"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.4.1"
|
||||||
|
flutter_keyboard_visibility_linux:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_keyboard_visibility_linux
|
||||||
|
sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
|
flutter_keyboard_visibility_macos:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_keyboard_visibility_macos
|
||||||
|
sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
|
flutter_keyboard_visibility_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_keyboard_visibility_platform_interface
|
||||||
|
sha256: e43a89845873f7be10cb3884345ceb9aebf00a659f479d1c8f4293fcb37022a4
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
|
flutter_keyboard_visibility_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_keyboard_visibility_web
|
||||||
|
sha256: d3771a2e752880c79203f8d80658401d0c998e4183edca05a149f5098ce6e3d1
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
|
flutter_keyboard_visibility_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_keyboard_visibility_windows
|
||||||
|
sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
flutter_plugin_android_lifecycle:
|
flutter_plugin_android_lifecycle:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -396,10 +444,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: js
|
name: js
|
||||||
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
|
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.5"
|
version: "0.6.7"
|
||||||
json_annotation:
|
json_annotation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -451,18 +499,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.13"
|
version: "0.12.16"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.5.0"
|
||||||
material_segmented_control:
|
material_segmented_control:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -475,10 +523,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
|
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.0"
|
version: "1.9.1"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -579,10 +627,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.2"
|
version: "1.8.3"
|
||||||
path_parsing:
|
path_parsing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -671,6 +719,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
|
pointer_interceptor:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pointer_interceptor
|
||||||
|
sha256: "6aa680b30d96dccef496933d00208ad25f07e047f644dc98ce03ec6141633a9a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.9.3+4"
|
||||||
pointycastle:
|
pointycastle:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -735,6 +791,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "4.0.0"
|
||||||
|
quill_html_editor:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: quill_html_editor
|
||||||
|
sha256: "16d09a35742aaa0059c1a332ab2cef4570c22053495d1b9dafd9d2573b837d94"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.9"
|
||||||
|
responsive_framework:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: responsive_framework
|
||||||
|
sha256: "97d4a8b9468c0ecaafe8566645d70cc59480e4b03704a1b936396e68775e2c34"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.0"
|
||||||
rxdart:
|
rxdart:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -776,10 +848,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.10.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -824,10 +896,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
|
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.16"
|
version: "0.6.0"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -868,6 +940,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.2"
|
version: "1.0.2"
|
||||||
|
web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: web
|
||||||
|
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.1.4-beta"
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -876,6 +956,38 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.3.0"
|
||||||
|
webview_flutter:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webview_flutter
|
||||||
|
sha256: "789d52bd789373cc1e100fb634af2127e86c99cf9abde09499743270c5de8d00"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.2.2"
|
||||||
|
webview_flutter_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webview_flutter_android
|
||||||
|
sha256: "532135f6f6b8030cd039f30eab23f340d650350e29f38e9b37d2eaad028f1018"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.8.0"
|
||||||
|
webview_flutter_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webview_flutter_platform_interface
|
||||||
|
sha256: "656e2aeaef318900fffd21468b6ddc7958c7092a642f0e7220bac328b70d4a81"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.1"
|
||||||
|
webview_flutter_wkwebview:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webview_flutter_wkwebview
|
||||||
|
sha256: ecc9e9ea15216afc5ba3b1f14aa19414ceba526e57b19cebd970bfa91a0f4058
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.5.0"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -909,5 +1021,5 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.1"
|
version: "3.1.1"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.18.0 <3.0.0"
|
dart: ">=3.1.0-185.0.dev <3.2.0"
|
||||||
flutter: ">=3.0.0"
|
flutter: ">=3.7.0"
|
||||||
|
|||||||
@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||||||
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
|
||||||
# Read more about iOS versioning at
|
# Read more about iOS versioning at
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
version: 1.0.1+2
|
version: 1.0.2+3
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.16.2 <3.2.0"
|
sdk: ">=2.16.2 <3.2.0"
|
||||||
@ -60,6 +60,8 @@ dependencies:
|
|||||||
# The following adds the Cupertino Icons font to your application.
|
# The following adds the Cupertino Icons font to your application.
|
||||||
# Use with the CupertinoIcons class for iOS style icons.
|
# Use with the CupertinoIcons class for iOS style icons.
|
||||||
cupertino_icons: ^1.0.2
|
cupertino_icons: ^1.0.2
|
||||||
|
quill_html_editor: ^2.1.9
|
||||||
|
responsive_framework: ^1.1.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user