Flutter标记:无法识别标记

时间:2020-06-04 05:49:06

标签: flutter

我正在尝试使用Flutter标记和计划来获取并保存到数据库。

我正在使用Flutter Tagging插件。这是我要复制的示例。

https://fluttercore.com/flutter-tagging-input-widget/

 class Tagging extends StatefulWidget {
      @override
      _TaggingState createState() => _TaggingState();
    }

    class _TaggingState extends State<Tagging> {
      final _scaffoldKey = GlobalKey<ScaffoldState>();
      String _selectedValuesJson = 'Nothing to show';
      List searchlists = [];
      var dtguid;
      var dtgname;
       int count = 0;
      var offset = 0;
     String nodata;

      @override
      void initState() {
        super.initState();
      }

      @override
      void dispose() {
        super.dispose();
      }



      String text = "Nothing to show";

      @override
      Widget build(BuildContext context) {
        return Scaffold(
        key:  _scaffoldKey,
          appBar: AppBar(
          //  title: Text(widget.title),
          ),
          body: SingleChildScrollView(
            child: Column(
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: FlutterTagging(
                    textFieldDecoration: InputDecoration(
                        border: OutlineInputBorder(),
                        hintText: "Tags",
                        labelText: "Enter tags"),
                    addButtonWidget: _buildAddButton(),
                    chipsColor: Colors.pinkAccent,
                    chipsFontColor: Colors.white,
                    deleteIcon: Icon(Icons.cancel,color: Colors.white),
                    chipsPadding: EdgeInsets.all(2.0),
                    chipsFontSize: 14.0,
                    chipsSpacing: 5.0,
                    chipsFontFamily: 'helvetica_neue_light',
                    suggestionsCallback: (pattern) async {
                      return await TagSearchService.getSuggestions(pattern);
                    },
                    onChanged: (result) {
                      setState(() {
                        text = result.toString();
                      });
                    },
                  ),
                ),
                SizedBox(
                  height: 20.0,
                ),
                Center(
                  child: Text(
                    text,
                    style: TextStyle(color: Colors.pink),
                  ),
                )
              ],
            ),
          ),
        );
      }

      Widget _buildAddButton() {
        return Container(
          padding: EdgeInsets.all(8.0),
          decoration: BoxDecoration(
            borderRadius: BorderRadius.all(Radius.circular(20.0)),
            color: Colors.pinkAccent,
          ),
          child: Row(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Icon(
                Icons.add,
                color: Colors.white,
                size: 15.0,
              ),
              Text(
                "Add New Tag",
                style: TextStyle(color: Colors.white, fontSize: 14.0),
              ),
            ],
          ),
        );
      }
    }

    class TagSearchService {
      static Future<List> getSuggestions(String query) async {
        await Future.delayed(Duration(milliseconds: 400), null);
        List<dynamic> tagList = <dynamic>[];
        tagList.add({'name': "Flutter", 'value': 1});
        tagList.add({'name': "HummingBird", 'value': 2});
        tagList.add({'name': "Dart", 'value': 3});
        List<dynamic> filteredTagList = <dynamic>[];
        if (query.isNotEmpty) {
          filteredTagList.add({'name': query, 'value': 0});
        }
        for (var tag in tagList) {
          if (tag['name'].toLowerCase().contains(query)) {
            filteredTagList.add(tag);
          }
        }
        return filteredTagList;
      }
    }

由于某种原因,它在下面的代码中给出了错误。

FlutterTagging(
                textFieldDecoration: InputDecoration(
                    border: OutlineInputBorder(),
                    hintText: "Tags",
                    labelText: "Enter tags"),
                addButtonWidget: _buildAddButton(),
                chipsColor: Colors.pinkAccent,
                chipsFontColor: Colors.white,
                deleteIcon: Icon(Icons.cancel,color: Colors.white),
                chipsPadding: EdgeInsets.all(2.0),
                chipsFontSize: 14.0,
                chipsSpacing: 5.0,
                chipsFontFamily: 'helvetica_neue_light',
                suggestionsCallback: (pattern) async {
                  return await TagSearchService.getSuggestions(pattern);
                },
                onChanged: (result) {

这是图片。

enter image description here

我正在使用此版本。

flutter_tagging: ^2.2.0+3

1 个答案:

答案 0 :(得分:2)

您可以在下面复制粘贴运行完整代码
您的代码使用flutter_tagging1.0.0,可以在pubspec.yaml中进行设置
设置版本

后,语法错误将消失
dependencies:
  flutter:
    sdk: flutter
  flutter_tagging: 1.0.0

对于最新版本2.2.0+3,您可以直接使用https://github.com/sarbagyastha/flutter_tagging/tree/master/example
适用于1.0.0版的演示

enter image description here

完整代码

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

class Tagging extends StatefulWidget {
  @override
  _TaggingState createState() => _TaggingState();
}

class _TaggingState extends State<Tagging> {
  final _scaffoldKey = GlobalKey<ScaffoldState>();
  String _selectedValuesJson = 'Nothing to show';
  List searchlists = [];
  var dtguid;
  var dtgname;
  int count = 0;
  var offset = 0;
  String nodata;

  @override
  void initState() {
    super.initState();
  }

  @override
  void dispose() {
    super.dispose();
  }

  String text = "Nothing to show";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      appBar: AppBar(
          //  title: Text(widget.title),
          ),
      body: SingleChildScrollView(
        child: Column(
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: FlutterTagging(
                textFieldDecoration: InputDecoration(
                    border: OutlineInputBorder(),
                    hintText: "Tags",
                    labelText: "Enter tags"),
                addButtonWidget: _buildAddButton(),
                chipsColor: Colors.pinkAccent,
                chipsFontColor: Colors.white,
                deleteIcon: Icon(Icons.cancel, color: Colors.white),
                chipsPadding: EdgeInsets.all(2.0),
                chipsFontSize: 14.0,
                chipsSpacing: 5.0,
                chipsFontFamily: 'helvetica_neue_light',
                suggestionsCallback: (pattern) async {
                  return await TagSearchService.getSuggestions(pattern);
                },
                onChanged: (result) {
                  setState(() {
                    text = result.toString();
                  });
                },
              ),
            ),
            SizedBox(
              height: 20.0,
            ),
            Center(
              child: Text(
                text,
                style: TextStyle(color: Colors.pink),
              ),
            )
          ],
        ),
      ),
    );
  }

  Widget _buildAddButton() {
    return Container(
      padding: EdgeInsets.all(8.0),
      decoration: BoxDecoration(
        borderRadius: BorderRadius.all(Radius.circular(20.0)),
        color: Colors.pinkAccent,
      ),
      child: Row(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          Icon(
            Icons.add,
            color: Colors.white,
            size: 15.0,
          ),
          Text(
            "Add New Tag",
            style: TextStyle(color: Colors.white, fontSize: 14.0),
          ),
        ],
      ),
    );
  }
}

class TagSearchService {
  static Future<List> getSuggestions(String query) async {
    await Future.delayed(Duration(milliseconds: 400), null);
    List<dynamic> tagList = <dynamic>[];
    tagList.add({'name': "Flutter", 'value': 1});
    tagList.add({'name': "HummingBird", 'value': 2});
    tagList.add({'name': "Dart", 'value': 3});
    List<dynamic> filteredTagList = <dynamic>[];
    if (query.isNotEmpty) {
      filteredTagList.add({'name': query, 'value': 0});
    }
    for (var tag in tagList) {
      if (tag['name'].toLowerCase().contains(query)) {
        filteredTagList.add(tag);
      }
    }
    return filteredTagList;
  }
}

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: Tagging(),
    );
  }
}