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

String inputText = '';
List<String> infoTitle = [];
String infoSubtitle = "";
List<String> infoAuthors = [];

class FinderBookSearch extends StatefulWidget {
  const FinderBookSearch({super.key, required this.title});
  final String title;

  @override
  State<FinderBookSearch> createState() => _FinderBookSearch();
}

class _FinderBookSearch extends State<FinderBookSearch> {
  void loadBookInfos() async {
    final books = await queryBooks(
      inputText,
      maxResults: 20,
      printType: PrintType.books,
      orderBy: OrderBy.relevance,
      reschemeImageLinks: true,
      langRestrict: "en",
    );
    for (var book in books) {
      var info = book.info;
      infoTitle.add(info.title);
    }
  }

  final TextEditingController _searchController = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          backgroundColor: Colors.white,
          title: Container(
            padding: const EdgeInsets.symmetric(horizontal: 8.0),
            child: TextField(
              onChanged: (text) {
                setState(() {
                  inputText = text;
                });
              },
              controller: _searchController,
              decoration: InputDecoration(
                hintText: 'Search...',
                // Add a clear button to the search bar
                suffixIcon: IconButton(
                  icon: const Icon(
                    Icons.clear,
                    color: Colors.black,
                  ),
                  onPressed: () => _searchController.clear(),
                ),
                prefixIcon: IconButton(
                  icon: const Icon(
                    Icons.search,
                    color: Colors.black,
                  ),
                  onPressed: () {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (_) => const AfterSearchScreen(),
                      ),
                    );
                    loadBookInfos();
                  },
                ),
              ),
            ),
          )),
    );
  }
}

class AfterSearchScreen extends StatefulWidget {
  const AfterSearchScreen({super.key});

  @override
  State<AfterSearchScreen> createState() => _AfterSearchScreenState();
}

class _AfterSearchScreenState extends State<AfterSearchScreen> {
  Widget a(String text) {
    return ElevatedButton(
      style: const ButtonStyle(),
      onPressed: () {},
      child: ListTile(
        title: Text(
          text,
          style: const TextStyle(color: Colors.black),
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Book Finder",
      home: Scaffold(
        backgroundColor: Colors.white,
        body: Container(
          decoration: const BoxDecoration(
            color: Colors.greenAccent,
          ),
          child: ListView.builder(
            itemCount: infoTitle.length,
            itemBuilder: (context, index) {
              return a(infoTitle[index]);
            },
          ),
        ),
      ),
    );
  }
}

这是我的密码.我想在我的应用程序上显示文本.我不知道为什么那个代码不能立刻工作.它不会立刻起作用.当我在我的Visual Studio代码中刷新自己时,它会显示文本.

我的主题是在不重新加载的情况下显示仰角按钮. 请让我知道它是否能在您的电脑上正常工作.因为我的电脑可能有故障.

推荐答案

在阅读了您给出的代码后,您的问题是

我想在我的应用程序上显示文本.我不知道为什么那个代码不能立刻工作.它不会立刻起作用.当我在我的Visual Studio代码中刷新自己时,它会显示文本.

在阅读这部分代码之后

 onPressed: () {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (_) => const AfterSearchScreen(),
                      ),
                    );
                    loadBookInfos();
                  },

我想我找到了您的问题,因为在数据添加到列表之前,您可以从这段代码导航到其他页面,您可以将navigator.push函数移动到loadBookInfos 这是一个例子

void loadBookInfos() async {
    final books = await queryBooks(
      inputText,
      maxResults: 20,
      printType: PrintType.books,
      orderBy: OrderBy.relevance,
      reschemeImageLinks: true,
      langRestrict: "en",
    );
    for (var book in books) {
      var info = book.info;
      infoTitle.add(info.title);
    }
      Navigator.push(
         context,
         MaterialPageRoute(
            builder: (_) => const AfterSearchScreen(),
         ),
     );
  }

在按下的功能上,删除您的navigator.push

Flutter相关问答推荐

当仅点击一行时,所有行都被选中

使用自定义控制器将项插入到ListView中时行为不正确

无法将Flutter 连接到Firebase

为什么我的PIN字段在第一次打字时不显示数字?

如何在用Ffltter成功登录后重定向下一页?

UI中的Flutter 下拉列表值未更改

Flutter 蜂巢不能正常工作,我正在使用蜂巢在设备上存储数据,但当我关闭并重新启动应用程序时,我失go 了一切

try 使用fl_Chart of Ffltter,但在导入它时遇到以下错误:Error:';TextScaler';is;t a type

顶部对齐ListTile的[前导、标题、尾随]小部件

如何在 Flutter 中设计像 zomato 应用程序一样的搜索字段?

Firestore 不会取代 map

如何使自动焦点位于已经有一些文本的 TextField 的第一行?

GridView 渲染项目之间有微小的间隙

尽管设置了对齐方式,如何对齐列中的行?

Flutter:我应该使用哪种应用内购买服务?

显示图像的放大部分

Flutter 错误:OutletListModel类型的值不能分配给List类型的变量?

有什么办法可以消除Flutter 中的传递依赖?

Firebase Cloud Messaging (Flutter):订阅主题时出现错误消息

如何验证位于 PageView 内不同页面的 TextFormFields