首页 > 解决方案 > 在 main 中发送一个参数并在小部件的构建中使用它(Flutter dart)

问题描述

我有一个 main.dart 文件。我想用 Tapboxes 创建按钮部分 wigdet。但是每个 Tapbox 都必须有自己的价值。

Widget buttonSection = Container(
  child: Row(
   // mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Column(
        children: [ 
          Tapbox(5),
          Tapbox(4),
        ],
      ),
     Column(
        children: [ 
          Tapbox(12),
          Tapbox(8),
        ],
      ),
  ),
);

这是我所有的 Tapbox wigdet 文件:

import 'package:flutter/material.dart';
 class TapboxA extends StatefulWidget {
  TapboxA({
   Key key, 
    this.number1,
     }) : super(key: key);
  final number1;
 @override
 _TapboxAState createState() => _TapboxAState();
 }
 class _TapboxAState extends State<TapboxA> {
 bool _active = false;

 void _handleTap() {
   setState(() {
   _active = !_active;
  });
}
 Widget build(BuildContext context) {
  return GestureDetector(
  onTap: _handleTap,
  child: Container(
    child: Center(
      child: Text(
        _active ? "Tapbox parameter value" : "Tapbox parameter value",
        style: TextStyle(fontSize: 12.0, color: Colors.white),
      ),
    ),
    width: 60.0,
    height: 60.0,
    decoration: BoxDecoration(
      color: _active ? Colors.lightGreen[700] : Colors.grey[600],
    ),
  ),
 );
}
}

但是当我在 Tapbox 中获取参数时,我无法在状态部分访问。我该如何修复此代码。

标签: flutterdartmobile

解决方案


在这里使用模型是传递给下一个小部件的列表

                           Navigator.push(
                                  context,
                                  MaterialPageRoute(
                                    builder: (context) => TaskDetailsPage(
                                      detail: model,
                                    ),
                                  ),
                                );

到下一页或小部件这里资产是列表,您可以编写 String getData;


class TaskDetailsPage extends StatefulWidget {
  final Asset detail;

  TaskDetailsPage({
    Key key,
    @required this.detail,
  }) : super(key: key);

  @override
  _TaskDetailsPageState createState() => _TaskDetailsPageState();
}

和访问是

                   Text(
                      widget.detail.title,
                      style: TextStyle(fontSize: 24),
                    ),

推荐阅读