无法在Flutter应用中基于构造函数添加参数

时间:2019-11-16 09:25:59

标签: flutter dart

我创建了一个图像列表,我想在GridView的卡片布局中显示它们。我还创建了一个具有颜色Color backgroundColor和AssetImage assetImage的构造函数。该构造函数位于另一个类Home()中,因此在我的材质应用中,可以在“ home”属性中对其进行调用。但是Home()要求2个参数,但我无法解决。我该怎么办?是的,我正在构建一个多合一的网站应用程序,因此代码中也包含了webView。

void main() => runApp(
  MaterialApp(
    routes: {
      "/webview": (_) => WebviewScaffold(
            withJavascript: true,
            withLocalStorage: true,
            url: 'https://www.google.com/',
            appBar: AppBar(
              title: Text('Browser'),
            ),
          ),
    },
    home: Home(),
  ),
);
class Home extends StatefulWidget {
 const Home(this.backgroundColor, this.assetImage);
 final Color backgroundColor;
 final AssetImage assetImage;
 @override
_HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
 final webView = FlutterWebviewPlugin();
 @override
void initState() {
super.initState();
webView.close();
}

@override
Widget build(BuildContext context) {
  var gridView = new GridView.builder(
      itemCount: 24,
      gridDelegate:
          new SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
      itemBuilder: (BuildContext context, int index) {
        return new GestureDetector(
          child: Container(
            padding: EdgeInsets.all(6),
            child: Card(
              color: widget.backgroundColor,
              child: new InkWell(
                onTap: () {},
                child: Center(
                child: Image(
                  image: widget.assetImage,
                  ),
                ),
              ),
            ),
          ),
          onTap: () {},
        );
      });

  return Scaffold(
    appBar: AppBar(
      title: Text('ANytHiNg'),
      backgroundColor: Colors.green,
    ),
    body: gridView,
  );
}

}

1 个答案:

答案 0 :(得分:0)

您可能会发现this有用。

您可以在其中将这样的列表传递给构造函数,

void main() {
  runApp(MyApp(
    items: List<String>.generate(10000, (i) => "Item $i"),
  ));
}

在此之后获得此列表

MyApp({Key key, @required this.items}) : super(key: key);