首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在flutter中调用类并访问类对象

在flutter中调用类并访问类对象
EN

Stack Overflow用户
提问于 2019-07-03 22:21:18
回答 1查看 3.4K关注 0票数 1

我在flutter中有一个类,我正在初始化一些类对象。我想调用那个类,对象将被初始化,我想在caller类中访问该对象。

下面是我的代码

代码语言:javascript
复制
import 'package:flutter/material.dart';

@immutable
class CardviewListItem {
  //final FlatButton icon;
  final IconData  icon;
  final String title;
  final String amount;

  const CardviewListItem({
    @required this.icon,
    @required this.title,
    @required this.amount,
  });
}
代码语言:javascript
复制
class SomeOtherClass {
  final summaryListItems = <CardviewListItem>[
    CardviewListItem(
        title: 'Total Income',
        amount:'4434.65',
        icon: makeIconWithCircle(Icons.attach_money) // call function to create an icon with a circle in the background.
    ),
  ];


  static Widget makeIconWithCircle(IconData iconData) { // function takes in the icon you want to create with a green background
    final circle =  Container(
      height: 25.0,
      width: 25.0,
      decoration: BoxDecoration(
          color: Colors.green,
          shape: BoxShape.circle
      ),
    );
    final icon = Icon(
      iconData, // iconData paramater is used here
      color: Colors.white,
      size: 18,
    );

    final iconWithCircle = Stack(
      alignment: Alignment.center,
      children: <Widget>[
        circle,
        icon
      ],
    );

    return iconWithCircle;
  }
}

我想调用SomeOtherClass并访问summaryListItems对象,这是我的caller类

代码语言:javascript
复制
import 'package:flutter/material.dart';
import 'package:finsec/widget/cardview_widget.dart';
import 'package:finsec/utils/strings.dart';
import 'package:finsec/utils/dimens.dart';
import 'package:finsec/utils/colors.dart';
import 'package:finsec/data/cardview_list_item.dart';

void main() {
  runApp(new HomeScreen());
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: new Stack(
        children: <Widget>[
          new Container(
            height: margin_200dp,
            color: colorPrimary,
          ),
          new Container(    //container to  overlay on top of blue container
            alignment: Alignment.topCenter,
            padding: new EdgeInsets.only(top: margin_0dp, right: margin_8dp, left: margin_8dp, bottom: margin_5dp),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.center,
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Text(
                  zeroAmount,
                  style: TextStyle(color: white, fontSize: 40.0, fontWeight: FontWeight.bold)
                ),
                Text(
                  currentBalance, style: TextStyle(color: white, fontSize: 20.0, fontWeight: FontWeight.bold)
                ),
                cardView(
                  header: summaryCard,
                  elevation: margin_4dp,
                  height: margin_220dp,
                  padding: margin_15dp,
                  listItems: <<I WANT TO ACCESS summaryListItems HERE>>
                ),

                //cardView(context)

              ],
            ),
          )
        ],
      ),
    );
  }
}

我希望能够在caller类中调用SomeOtherClass并访问summaryListItems。请参见上面代码中的listItems:<>行

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-03 23:23:29

您只需要在HomeScreen中获取SomeOtherClass的一个实例,这取决于您希望如何对其进行建模某些类需要创建该实例并将其注入到屏幕上,或者只是让屏幕创建它。最简单的方法是在屏幕上创建实例,基本上是:

代码语言:javascript
复制
class HomeScreen extends StatelessWidget {

SomeOtherClass someotherClass = SomeOtherClass();

然后在列表中使用

代码语言:javascript
复制
cardView(
    header: summaryCard,
    elevation: margin_4dp,
    height: margin_220dp,
    padding: margin_15dp,
    listItems: someotherClass.summaryListItems,
),

希望能有所帮助,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56872223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档