簡體   English   中英

Flutter GestureDetector 無法處理功能

[英]Flutter GestureDetector is not working on functions

class GridDashboard extends StatefulWidget {
  final Function onTap;

  const GridDashboard({Key key, this.onTap}) : super(key: key);
  @override
  _GridDashboardState createState() => _GridDashboardState();
}

class _GridDashboardState extends State<GridDashboard> {
  Items item1 = new Items(
      title: 'Books',
      img: 'assets/images/open-book.png',
      onTap: () {
        Books();
      });
  Items item2 = new Items(
      title: 'Audio',
      img: 'assets/images/headphones.png',
      onTap: () => print('Audio'));   // it works when I just print smth 
  Items item3 = new Items(
      title: 'Videos',
      img: 'assets/images/play-button.png',
      onTap: () {
        Videos();
      });

  @override
  Widget build(BuildContext context) {
    List<Items> myList = [item1, item2, item3];
    return Flexible(
      child: GridView.count(
        childAspectRatio: 1.0,
        padding: EdgeInsets.only(left: 30, right: 20, top: 220),
        crossAxisCount: 2,
        crossAxisSpacing: 20,
        mainAxisSpacing: 20,
        children: myList.map((data) {
          return GestureDetector(
            onTap: data.onTap,   // this line is not working 
            child: Container(
              decoration: BoxDecoration(
                color: Color(0xFFFFFFFF),
                borderRadius: BorderRadius.circular(35),
                boxShadow: [
                  BoxShadow(
                    color: Color(0xFF373234),
                    blurRadius: 6.0,
                    offset: Offset(0, 2),
                  ),
                ],
              ),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Image.asset(data.img, width: 45),
                  SizedBox(height: 15),
                  Text(
                    data.title,
                    style: GoogleFonts.openSans(
                      textStyle: TextStyle(
                        color: Colors.black,
                        fontSize: 16,
                        fontWeight: FontWeight.w600,
                      ),
                    ),
                  ),
                ],
              ),
            ),
          );
        }).toList(),
      ),
    );
  }
}

class Items {
  String title;
  String img;
  Function onTap;

  Items({this.img, this.title, this.onTap});
}

大家好。 我正在構建一個 android 應用程序。 上面的代碼用於我的代碼的儀表板(菜單)部分。 當我想要 go 到另一個屏幕時,GestureDetector onTap function 不起作用。 但如果我只是想打印出來,它就可以了。 如果您知道如何解決此問題,您可以在這里提供幫助嗎?

謝謝你。

您可以使用命名路由。

例如:將routes添加到您的MaterialApp

void main() {
  runApp(MaterialApp(
    initialRoute: '/',
    routes: {
      '/': (context) => FirstScreen(),
      '/books': (context) => Books(),
      '/videos': (context) => Videos(),
    },
  ));
}

onTap改為go到具體頁面

 onTap: () {
        Navigator.pushNamed(context, '/books');
      });

相應地更改小部件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM