aym*_*969 2 widget dart flutter flutter-alertdialog flutter-windows
一小时前,当我将 TextField 放入 AlertDialog 中时,我发现了一个奇怪的行为,它不允许输入空格,否则它的行为正常,这是我的代码:
\n//================Flutter doctor -v\n[\xe2\x88\x9a] Flutter(频道稳定,2.0.2,在 Microsoft Windows 上 [版本 10.0.18363.1316] ,语言环境 en-US)\n\xe2\x80\xa2 Flutter 版本 2.0.2,位于 C:\\Flutter\\flutter-latest\n\xe2\x80\xa2 框架修订版 8962f6dc68(5 天前),2021-03 -11 13:22:20 -0800\n\xe2\x80\xa2 引擎修订版 5d8bf811b3\n\xe2\x80\xa2 Dart 版本 2.12.1
\n[\xe2\x88\x9a] Android 工具链 - 为 Android 设备开发(Android SDK 版本 29.0.3)\n\xe2\x80\xa2 Android SDK,位于 C:\\Users\\user\\AppData\\Local\\ Android\\sdk\n\xe2\x80\xa2 平台 android-30,构建工具 29.0.3\n\xe2\x80\xa2 Java 二进制文件位于:C:\\Program Files\\Android\\Android Studio\\ jre\\bin\\java\n\xe2\x80\xa2 Java 版本 OpenJDK 运行时环境(内部版本 1.8.0_202-release-1483-b03)\n\xe2\x80\xa2 接受所有 Android 许可证。
\n[\xe2\x88\x9a] Chrome - 为网络开发\n\xe2\x80\xa2 Chrome,位于 C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\Application\\chrome 。EXE文件
\n[\xe2\x88\x9a] Visual Studio - 针对 Windows 进行开发(Visual Studio Community 2019 16.9.0)\n\xe2\x80\xa2 Visual Studio 位于 C:\\Program Files (x86)\\Microsoft Visual Studio\\ 2019\\Community\n\xe2\x80\xa2 Visual Studio Community 2019 版本 16.9.31025.194\n\xe2\x80\xa2 Windows 10 SDK 版本 10.0.19041.0
\n[\xe2\x88\x9a] Android Studio(版本 3.5)\n\xe2\x80\xa2 Android Studio 位于 C:\\Program Files\\Android\\Android Studio\n\xe2\x80\xa2 Flutter 插件版本 42.1 .1\n\xe2\x80\xa2 Dart 插件版本 191.8593\n\xe2\x80\xa2 Java 版本 OpenJDK 运行时环境(内部版本 1.8.0_202-release-1483-b03)
\n[\xe2\x88\x9a] IntelliJ IDEA 社区版(版本 2020.2)\n\xe2\x80\xa2 IntelliJ 位于 C:\\Program Files\\JetBrains\\IntelliJ IDEA 社区版 2020.2.1\n\xe2\x80 \xa2 Flutter 插件可以从以下位置安装:\n https://plugins.jetbrains.com/plugin/9212-flutter \n\xe2\x80\xa2 Dart 插件可以从以下位置安装:\n https://plugins.jetbrains .com/plugin/6351-dart
\n[\xe2\x88\x9a] VS Code(版本 1.54.3)\n\xe2\x80\xa2 VS Code 位于 C:\\Users\\user\\AppData\\Local\\Programs\\Microsoft VS Code\ n\xe2\x80\xa2 Flutter 扩展版本 3.20.0
\n[\xe2\x88\x9a] 连接的设备(3 个可用)\n\xe2\x80\xa2 Windows(桌面) \xe2\x80\xa2 windows \xe2\x80\xa2 windows-x64 \xe2\x80\xa2 Microsoft Windows [版本 10.0.18363.1316]\n\xe2\x80\xa2 Chrome(网络)\xe2\x80\xa2 chrome \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Google Chrome 89.0.4389.82\n\xe2\ x80\xa2 Edge(网络)\xe2\x80\xa2 边缘 \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Microsoft Edge 89.0.774.54
\n\xe2\x80\xa2 未发现问题!
\n\n\n\n//======AppTextField widget\n\n\nimport \'package:flutter/material.dart\';\nimport \'package:flutter/services.dart\';\n\nclass AppTextField extends StatefulWidget {\n final String caption;\n final dynamic initialValue;\n final dynamic Function(String) onSubmitted;\n final bool readOnly;\n const AppTextField(\n {Key key,\n this.caption,\n this.onSubmitted,\n this.initialValue,\n this.readOnly = false})\n : super(key: key);\n\n @override\n _AppTextFieldState createState() => _AppTextFieldState();\n}\n\nclass _AppTextFieldState extends State<AppTextField> {\n TextEditingController _textEditingController;\n\n TextStyle _captionStyle = TextStyle(fontSize: 17);\n TextStyle _textStyle = TextStyle(fontSize: 17);\n\n String get value => _textEditingController.text;\n\n @override\n void initState() {\n super.initState();\n\n this._textEditingController = TextEditingController();\n this._textEditingController.text = this.widget.initialValue != null\n ? this.widget.initialValue.toString()\n : "";\n }\n\n @override\n Widget build(BuildContext context) {\n return TextField(\n textInputAction: TextInputAction.none,\n readOnly: this.widget.readOnly,\n enableInteractiveSelection: true,\n cursorHeight: 30,\n onEditingComplete: () {\n int u = 9;\n },\n onChanged: (v) {\n // if (this.widget.onSubmitted != null) {\n // var val = this.widget.onSubmitted(v);\n // if (val != null) this._textEditingController.text = val.toString();\n // }\n },\n style: _textStyle,\n controller: _textEditingController,\n decoration: InputDecoration(\n isDense: true,\n contentPadding: EdgeInsets.all(15.0),\n labelText: this.widget.caption,\n floatingLabelBehavior: FloatingLabelBehavior.always,\n border: OutlineInputBorder(\n borderRadius: BorderRadius.circular(10),\n borderSide: BorderSide(color: Colors.green, width: 1.0))),\n );\n }\n\n @override\n void dispose() {\n this._textEditingController.dispose();\n super.dispose();\n }\n}\n\n\n//======the I use AppTextField widget inside AlertDialog like this :\n\nimport \'package:animate_do/animate_do.dart\';\nimport \'package:flutter/material.dart\';\nimport \'package:flutter_desktop/Views/App-Widgets/AppTextField.dart\';\nimport \'package:flutter_desktop/Views/Room/Notification-Dialog.dart\';\nimport \'package:flutter_desktop/Views/states/Message-State.dart\';\nimport \'package:provider/provider.dart\';\n\nimport \'Chat/ChatMessage.dart\';\n\nclass SendNotificationDialog extends StatefulWidget {\n @override\n _SendNotificationDialogState createState() => _SendNotificationDialogState();\n}\n\nclass _SendNotificationDialogState extends State<SendNotificationDialog> {\n String _message = "";\n @override\n Widget build(BuildContext context) {\n return AlertDialog(\n elevation: 10,\n titleTextStyle: TextStyle(\n fontSize: 20, fontWeight: FontWeight.bold, color: Colors.black),\n title: Text("\xd8\xb1\xd8\xb3\xd8\xa7\xd9\x84\xd8\xa9 \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87"),\n content: Builder(\n builder: (context) => _createBody(context),\n ),\n actions: [\n MaterialButton(\n onPressed: () {\n Navigator.pop(context);\n\n var messageState =\n Provider.of<MessageState>(context, listen: false);\n\n messageState.addMessage(_message, MessageType.NOTIFICATION);\n\n Navigator.push(\n context,\n PageRouteBuilder(\n barrierDismissible: true,\n opaque: false,\n pageBuilder: (_, __, ___) => NotificationDialog(\n userName: "Yousel : ",\n notification: _message,\n )));\n },\n child: Text("\xd9\x85\xd9\x88\xd8\xa7\xd9\x81\xd9\x82"),\n ),\n MaterialButton(\n onPressed: () {\n Navigator.pop(context);\n },\n child: Text("\xd8\xa5\xd9\x84\xd8\xba\xd8\xa7\xd8\xa1"),\n ),\n ],\n );\n }\n\n _createBody(BuildContext context) {\n return Container(\n width: 500,\n height: 100,\n child: ListTile(\n autofocus: true,\n title: AppTextField(\n initialValue: _message,\n onSubmitted: (v) {\n _message = v;\n return _message;\n },\n caption: "\xd8\xa3\xd8\xaf\xd8\xae\xd9\x84 \xd8\xa7\xd9\x84\xd9\x86\xd8\xb5 \xd8\xa7\xd9\x84\xd8\xb0\xd9\x89 \xd8\xb3\xd9\x88\xd9\x81 \xd9\x8a\xd8\xb4\xd8\xa7\xd9\x87\xd8\xaf\xd9\x87 \xd8\xa7\xd9\x84\xd8\xac\xd9\x85\xd9\x8a\xd8\xb9",\n ),\n ),\n );\n }\n}\n\n\n//=======Then I push SendNotificationDialog page :\n\n Navigator.push(\n context,\n PageRouteBuilder(\n barrierDismissible: true,\n opaque: false,\n transitionDuration: Duration(milliseconds: 500),\n transitionsBuilder:\n (context, firstAnimation, secondAnimation, child) {\n firstAnimation = CurvedAnimation(\n parent: firstAnimation, curve: Curves.fastLinearToSlowEaseIn);\n\n return ScaleTransition(\n scale: firstAnimation,\n child: child,\n );\n },\n pageBuilder: (_, __, ___) {\n return SendNotificationDialog();\n }));\n\n\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1749 次 |
| 最近记录: |