小编xen*_*s92的帖子

Flutter 使用 Provider 和 Riverpod 制作表单

我是 Flutter 新手,我想升级我的代码。我有一个使用多个文本表单字段的表单,我想使用提供程序和 Riverpod 转换此代码以提高可读性,但我不确定如何执行此操作。\n对于该示例,我将代码简化为只有一个距离字段,但有很多距离字段其他的。

\n

这是我的计算器屏幕:

\n
import '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)

dart flutter riverpod

9
推荐指数
1
解决办法
8553
查看次数

带有 Riverpod 的 Flutter 导航栏

我试图管理我的状态,但我真的做不到。我想学习如何使用 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)

dart flutter riverpod

3
推荐指数
1
解决办法
1134
查看次数

Flutter:Matrix4 在动画过渡期间偏心旋转

描述:

您好,我正在尝试为对象的旋转设置动画。为此,我使用 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)

dart flutter

3
推荐指数
1
解决办法
1131
查看次数

获取文本字段中的光标位置

我想创建一个默认行为被禁用的视图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)

keyboard textfield dart flutter

2
推荐指数
1
解决办法
2063
查看次数

标签 统计

dart ×4

flutter ×4

riverpod ×2

keyboard ×1

textfield ×1