StreamMessageInputController

This commit is contained in:
Salvatore Giordano
2022-05-02 11:59:32 +02:00
parent 736d70e466
commit 402b0038c6
13 changed files with 121 additions and 286 deletions
@@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
<string>9.0</string>
</dict>
</plist>
@@ -139,6 +139,7 @@
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
EDC4CAB19281E65D2B18E888 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -155,7 +156,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@@ -247,6 +248,23 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
EDC4CAB19281E65D2B18E888 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
location = "self:">
</FileRef>
</Workspace>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -205,20 +205,20 @@ class MessageScreen extends StatefulWidget {
}
class _MessageScreenState extends State<MessageScreen> {
late final TextEditingController _controller;
final StreamMessageInputController messageInputController =
StreamMessageInputController();
late final ScrollController _scrollController;
final messageListController = MessageListController();
@override
void initState() {
super.initState();
_controller = TextEditingController();
_scrollController = ScrollController();
}
@override
void dispose() {
_controller.dispose();
messageInputController.dispose();
_scrollController.dispose();
super.dispose();
}
@@ -319,7 +319,8 @@ class _MessageScreenState extends State<MessageScreen> {
children: [
Expanded(
child: TextField(
controller: _controller,
controller: messageInputController.textEditingController,
onChanged: (s) => messageInputController.text = s,
decoration: const InputDecoration(
hintText: 'Enter your message',
),
@@ -331,12 +332,13 @@ class _MessageScreenState extends State<MessageScreen> {
clipBehavior: Clip.hardEdge,
child: InkWell(
onTap: () async {
if (_controller.value.text.isNotEmpty) {
if (messageInputController.message.text?.isNotEmpty ==
true) {
await channel.sendMessage(
Message(text: _controller.value.text),
messageInputController.message,
);
messageInputController.clear();
if (mounted) {
_controller.clear();
_updateList();
}
}