我是 Flutter 新手,我想升级我的代码。我有一个使用多个文本表单字段的表单,我想使用提供程序和 Riverpod 转换此代码以提高可读性,但我不确定如何执行此操作。\n对于该示例,我将代码简化为只有一个距离字段,但有很多距离字段其他的。
\n这是我的计算器屏幕:
\nimport 'dart:async' show Future;\nimport 'package:flutter/cupertino.dart';\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/material.dart';\nimport 'package:app/core/models/model_form_calculator.dart';\nimport 'package:app/core/services/service_form_validator.dart';\nimport 'package:app/core/utils/utils_app_color.dart';\n\nclass CalculatorScreen extends StatefulWidget\n{\n CalculatorScreen({Key key}) : super(key: key);\n\n @override\n _CalculatorScreenState createState() => _CalculatorScreenState();\n}\n\nclass _CalculatorScreenState extends State<CalculatorScreen>\n{\n final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();\n final _formKey = GlobalKey<FormState>();\n\n FormCalculatorModel _formData = FormCalculatorModel();\n bool _autoValidateForm = false;\n\n final TextEditingController _controllerDistance = TextEditingController();\n\n @override\n void initState() {\n super.initState();\n }\n\n @override\n void dispose()\n {\n _controllerDistance.dispose();\n super.dispose();\n }\n\n @override\n Widget build(BuildContext context)\n {\n return GestureDetector(\n onTap: (() => …Run Code Online (Sandbox Code Playgroud) 我试图管理我的状态,但我真的做不到。我想学习如何使用 riverpod 包在管理页面底部创建导航栏。
我设法管理我们单击的页面,但我看不到如何根据所选按钮返回正确的寻呼机
主要.dart :
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:app/ui/screens/my_app/my_app_screen.dart';
void main() {
runApp(
const ProviderScope(child: MyApp()),
);
}
Run Code Online (Sandbox Code Playgroud)
NavigationBarScreen.dart:
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
final provider = StateNotifierProvider((ref) => NavigationNotifier());
class NavigationBarScreen extends HookWidget
{
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body : Container(
margin: EdgeInsets.only(left : 8, right : 8, bottom: 8),
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topRight: Radius.circular(20), topLeft: Radius.circular(20)),
boxShadow: [
BoxShadow(color: AppColors.colorShadowLight, spreadRadius: 0, blurRadius: 10),
],
),
child: ClipRRect( …Run Code Online (Sandbox Code Playgroud) 描述:
您好,我正在尝试为对象的旋转设置动画。为此,我使用 Matrix4 来控制对象的旋转点。我在动画过渡期间有一个奇怪的行为。
问题 :
为什么我的绿色方块在动画过程中不保持围绕中心的旋转?
代码 :
class NodeV3View extends StatefulWidget {
const NodeV3View({
Key? key,
}) : super(key: key);
@override
State<NodeV3View> createState() => _NodeV3ViewState();
}
class _NodeV3ViewState extends State<NodeV3View> {
bool isExpand = false;
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
var controller = Provider.of<CompteurProvider2>(context);
return Scaffold(
body: LayoutBuilder(
builder: (context, constraints){
return Consumer<CompteurProvider2>(builder :(ctx , provider , child){
return GestureDetector(
onTap: () => setState(() {}),
child: Container(
color: Colors.yellow,
width: 300,
height: …Run Code Online (Sandbox Code Playgroud) 我想创建一个默认行为被禁用的视图TextField(即我不启用单击时的默认键盘)。我创建了自己的键盘,因为它允许我为我的应用程序执行特定操作。键盘工作良好并填充TextField.
我的问题
我无法管理cursor中的闪烁TextField。事实上,当我在键盘上打字时,它cursor会跟随我的文本,所以没问题。另一方面,如果我决定在文本中间手动单击,则cursor移动但输入的新字符不会到达 的位置cursor。
这个怎么做 ?
它是什么样子的 ?
我的代码
我的文本字段小部件:
InputAtom(
autofocus: true,
controller: controllerInput,
placeholder: "Placeholder",
fontSize: 35,
keyboard: TextInputType.none,
enableInteractiveSelection: true,
showCursor: true,
cursorColor: Colors.red,
enableSuggestions: false,
autocorrect: false,
),
Run Code Online (Sandbox Code Playgroud)
我的按钮键盘示例:
KeyboardButtonAtom.numeric({
Key? key,
required String text,
required TextEditingController controller,
}): super(
key: key,
text: text,
controller: controller,
onPressed: (){
// Here I add the number typed on …Run Code Online (Sandbox Code Playgroud)