Flutter应用程序上的额外按钮覆盖,类似于屏幕烧伤

krcsximq  于 2023-06-07  发布在  Flutter
关注(0)|答案(1)|浏览(221)

我一直在尝试使用谷歌MapAPI来制作一些个人项目,当我创建了一个基本的主页,显示Map快照和两个按钮时,它看起来像下面,我的按钮是直接位于Map下方的按钮,但下面类似的按钮没有编码,它们也不像按钮一样工作,就像屏幕烧伤,请参考下面的图像:

下面是代码:

  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:google_maps_flutter/google_maps_flutter.dart';
  4. class HomePage extends StatefulWidget {
  5. const HomePage({super.key});
  6. @override
  7. State<HomePage> createState() {
  8. return _HomePageState();
  9. }
  10. }
  11. class _HomePageState extends State<HomePage> {
  12. final Completer<GoogleMapController> _controller = Completer();
  13. static const LatLng curLoc = LatLng(9.970630, 76.425110);
  14. @override
  15. Widget build(BuildContext context) {
  16. return Scaffold(
  17. appBar: AppBar(
  18. toolbarTextStyle: const TextStyle(color: Colors.white54),
  19. title: const Center(
  20. child: Text('Route Prediction'),
  21. ),
  22. ),
  23. body: Column(
  24. mainAxisAlignment: MainAxisAlignment.center,
  25. children: [
  26. Container(
  27. margin: const EdgeInsets.only(top: 10),
  28. height: 300,
  29. child: GoogleMap(
  30. initialCameraPosition:
  31. const CameraPosition(target: curLoc, zoom: 10),
  32. markers: {
  33. const Marker(markerId: MarkerId("You"), position: curLoc)
  34. },
  35. ),
  36. ),
  37. const SizedBox(
  38. height: 30,
  39. ),
  40. Row(
  41. crossAxisAlignment: CrossAxisAlignment.center,
  42. mainAxisAlignment: MainAxisAlignment.center,
  43. children: [
  44. ElevatedButton(
  45. onPressed: () {},
  46. child: const Text('General User'),
  47. ),
  48. const SizedBox(
  49. width: 5,
  50. ),
  51. ElevatedButton(
  52. onPressed: () {},
  53. child: const Text(
  54. 'Emergency Vehicle',
  55. style: TextStyle(fontSize: 15),
  56. ),
  57. ),
  58. ],
  59. ),
  60. ],
  61. ),
  62. );
  63. }
  64. }
gblwokeq

gblwokeq1#

MaterialApp小部件 Package Scaffold小部件

在我的设备上运行你的代码并没有重现你在屏幕截图中显示的重复按钮问题,但我收到了一个No Directionality error

然后,我注意到您没有将ScaffoldMaterialApp小部件 Package 在一起。请参见Flutter documentation
所以我所做的就是用MaterialApp小部件 Package Scaffold小部件,并更改将Scaffold小部件插入home的参数。

  1. return MaterialApp(
  2. home: Scaffold(
  3. //...The rest of the code

所以你的整个main.dart代码应该看起来像这样:

  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:google_maps_flutter/google_maps_flutter.dart';
  4. class HomePage extends StatefulWidget {
  5. const HomePage({super.key});
  6. @override
  7. State<HomePage> createState() {
  8. return _HomePageState();
  9. }
  10. }
  11. class _HomePageState extends State<HomePage> {
  12. final Completer<GoogleMapController> _controller = Completer();
  13. static const LatLng curLoc = LatLng(9.970630, 76.425110);
  14. @override
  15. Widget build(BuildContext context) {
  16. return MaterialApp(
  17. home: Scaffold(
  18. appBar: AppBar(
  19. toolbarTextStyle: const TextStyle(color: Colors.white54),
  20. title: const Center(
  21. child: Text('Route Prediction'),
  22. ),
  23. ),
  24. body: Column(
  25. mainAxisAlignment: MainAxisAlignment.center,
  26. children: [
  27. Container(
  28. margin: const EdgeInsets.only(top: 10),
  29. height: 300,
  30. child: GoogleMap(
  31. initialCameraPosition:
  32. const CameraPosition(target: curLoc, zoom: 10),
  33. markers: {
  34. const Marker(markerId: MarkerId("You"), position: curLoc)
  35. },
  36. ),
  37. ),
  38. const SizedBox(
  39. height: 30,
  40. ),
  41. Row(
  42. crossAxisAlignment: CrossAxisAlignment.center,
  43. mainAxisAlignment: MainAxisAlignment.center,
  44. children: [
  45. ElevatedButton(
  46. onPressed: () {},
  47. child: const Text('General User'),
  48. ),
  49. const SizedBox(
  50. width: 5,
  51. ),
  52. ElevatedButton(
  53. onPressed: () {},
  54. child: const Text(
  55. 'Emergency Vehicle',
  56. style: TextStyle(fontSize: 15),
  57. ),
  58. ),
  59. ],
  60. ),
  61. ],
  62. ),
  63. ),
  64. );
  65. }
  66. }

有了这个,你的应用程序应该很好:

我希望这对你有帮助!

展开查看全部

相关问题