颤振:在堆栈中轻拍

约翰·斯莱

我仍然会因颤抖而脚湿,所以我希望这很容易解决

我有一段代码将加载JSON feed,将其放在一列中并显示各个项目。我想要一个onTap来将屏幕重定向到详细信息屏幕。我想打个电话:

onTap: (){ showVehiclePage(context, snapshot.data.vehicles[index]); },

挑战是,我不知道如何使它工作。我无法将onTap放置在任何地方,并且尝试使用InkWell,但是我没有弄清楚如何正确放置它。我仍然有点颤抖,但是当我点击堆栈子项时,如何调用showVehiclePage函数?

class browseRC extends StatelessWidget {
  final Future<Vehicles> vehicles;

  browseRC({Key key, this.vehicles}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Browse RCs',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        body: Center(
          child: FutureBuilder<Vehicles>(
            future: vehicles,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                ListView.builder(
                  itemCount: snapshot.data.vehicles.length,
                  itemBuilder: (context, index) {
                    //Vehicle thisVeh = snapshot.data.vehicles[index];
                    return Column(
                      children: <Widget>[
                        Stack(
                        children: <Widget>[
                          FadeInImage.memoryNetwork(
                            placeholder: kTransparentImage,
                            image: '${snapshot.data.vehicles[index].defImage}',
                            height: 250,
                            fit: BoxFit.cover,
                          ),
                          Container(
                            padding: EdgeInsets.all(5.0),
                            margin: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 5.0),
                            //width: 250,
                            height: 250,
                            alignment: Alignment.bottomCenter,
                            decoration: BoxDecoration(
                              gradient: LinearGradient(
                                begin: Alignment.topCenter,
                                end: Alignment.bottomCenter,
                                colors: <Color>[
                                  Colors.black.withAlpha(0),
                                  Colors.black12,
                                  Colors.black87
                                ],
                              ),
                            ),

                            child: Text(
                              '${snapshot.data.vehicles[index].title}',
                              style: TextStyle(
                                  color: Colors.white, fontSize: 20.0),
                            ),
                          )
                        ])
                      ],
                    );
                  },
                );
              } else if (snapshot.hasError) {
                return Text("${snapshot.error}");
              }
              // By default, show a loading spinner.
              return CircularProgressIndicator();
            },
          ),
        ),
      ),
    );
  }

  void showVehiclePage(BuildContext context, Vehicle vehicle) {
    Navigator.push(
        context,
        new MaterialPageRoute<Null>(
            settings: const RouteSettings(name: VehiclePage.routeName),
            builder: (BuildContext context) => new VehiclePage(vehicle)));
  }
}
chunhunghan

您可以在下面的
步骤1中复制粘贴运行完整代码:您可以检查ConnectionState
步骤2:您可以使用自动InkWell换行Column
代码段

 return ListView.builder(
                        itemCount: snapshot.data.vehicles.length,
                        itemBuilder: (context, index) {
                          //Vehicle thisVeh = snapshot.data.vehicles[index];
                          return InkWell(
                            onTap: () {
                              showVehiclePage(
                                  context, snapshot.data.vehicles[index]);
                            },
                            child: Column(
                              children: <Widget>[

工作演示

在此处输入图片说明

完整的代码

import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';

class Vehicles {
  List<Vehicle> vehicles;
  Vehicles({this.vehicles});
}

Future<Vehicles> getVehicles() {
  var a = [
    Vehicle(title: "a", defImage: "https://picsum.photos/250?image=9"),
    Vehicle(title: "b", defImage: "https://picsum.photos/250?image=10")
  ];
  print("return");
  return Future.value(Vehicles(vehicles: a));
}

class browseRC extends StatelessWidget {
  final Future<Vehicles> vehicles;

  browseRC({Key key, this.vehicles}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Browse RCs',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: Scaffold(
            body: Center(
          child: FutureBuilder<Vehicles>(
              future: vehicles,
              builder: (context, snapshot) {
                switch (snapshot.connectionState) {
                  case ConnectionState.none:
                    return Text('none');
                  case ConnectionState.waiting:
                    return Center(child: CircularProgressIndicator());
                  case ConnectionState.active:
                    return Text('');
                  case ConnectionState.done:
                    if (snapshot.hasError) {
                      return Text(
                        '${snapshot.error}',
                        style: TextStyle(color: Colors.red),
                      );
                    } else {
                      return ListView.builder(
                        itemCount: snapshot.data.vehicles.length,
                        itemBuilder: (context, index) {
                          //Vehicle thisVeh = snapshot.data.vehicles[index];
                          return InkWell(
                            onTap: () {
                              showVehiclePage(
                                  context, snapshot.data.vehicles[index]);
                            },
                            child: Column(
                              children: <Widget>[
                                Stack(children: <Widget>[
                                  FadeInImage.memoryNetwork(
                                    placeholder: kTransparentImage,
                                    image:
                                        '${snapshot.data.vehicles[index].defImage}',
                                    height: 250,
                                    fit: BoxFit.cover,
                                  ),
                                  Container(
                                    padding: EdgeInsets.all(5.0),
                                    margin:
                                        EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 5.0),
                                    //width: 250,
                                    height: 250,
                                    alignment: Alignment.bottomCenter,
                                    decoration: BoxDecoration(
                                      gradient: LinearGradient(
                                        begin: Alignment.topCenter,
                                        end: Alignment.bottomCenter,
                                        colors: <Color>[
                                          Colors.black.withAlpha(0),
                                          Colors.black12,
                                          Colors.black87
                                        ],
                                      ),
                                    ),

                                    child: Text(
                                      '${snapshot.data.vehicles[index].title}',
                                      style: TextStyle(
                                          color: Colors.white, fontSize: 20.0),
                                    ),
                                  )
                                ])
                              ],
                            ),
                          );
                        },
                      );
                    }
                }
              }),
        )));
  }

  void showVehiclePage(BuildContext context, Vehicle vehicle) {
    Navigator.push(
        context,
        MaterialPageRoute<Null>(
            builder: (BuildContext context) => VehiclePage(vehicle)));
  }
}

class Vehicle {
  String defImage;
  String title;

  Vehicle({this.title, this.defImage});
}

class VehiclePage extends StatelessWidget {
  final Vehicle vehicle;
  VehiclePage(this.vehicle);

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
          appBar: AppBar(
            title: Text("${vehicle.title}"),
          ),
          body: Column(
            children: [
              Text("${vehicle.title}"),
              FadeInImage.memoryNetwork(
                placeholder: kTransparentImage,
                image: '${vehicle.defImage}',
                height: 250,
                fit: BoxFit.cover,
              ),
            ],
          )),
    );
  }
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: browseRC(
        vehicles: getVehicles(),
      ),
    );
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与颤振中的堆栈对齐

来自分类Dev

颤振:堆栈中的长文本重叠并从顶部开始

来自分类Dev

颤振中的问题

来自分类Dev

颤振中的文字换行

来自分类Dev

颤振:主轴对准不适用于堆栈

来自分类Dev

颤振:主轴对准不适用于堆栈

来自分类Dev

BottomNavigationBarItem颤振中的背景色

来自分类Dev

如何比较颤振中的时间?

来自分类Dev

颤振中的函数调用问题

来自分类Dev

颤振中的浮动动作按钮

来自分类Dev

遍历飞镖/颤振中的贴图值

来自分类Dev

颤振中的多重相关下拉

来自分类Dev

颤振中的可滚动列

来自分类Dev

在颤振中测试kIsWeb常数

来自分类Dev

颤振中的下拉按钮面临问题

来自分类Dev

了解Dart中的括号(颤振)

来自分类Dev

如何使容器在颤振中垂直居中?

来自分类Dev

颤振中的弯曲导航栏

来自分类Dev

容器中的颤振盒装饰

来自分类Dev

页面中的颤振导航栏

来自分类Dev

如何正确固定颤振中的行距

来自分类Dev

如何在颤振中管理状态?

来自分类Dev

如何在颤振中绘制扇区?

来自分类Dev

在 futureBuilder 颤振中创建 listView 的问题

来自分类Dev

颤振:颤振中的iOS样式日期选择器

来自分类Dev

是否有可能修复颤振稳定通道中“颤振”下发现的意外子“生成”

来自分类Dev

颤振中stacktrace输出中的<异步悬挂>

来自分类Dev

在颤振中的模态底部工作表中实现 WebView

来自分类Dev

空白不会从颤振中的字符串中删除