crossword 1.3.2
crossword: ^1.3.2 copied to clipboard
A Flutter package providing a user interface for solving crossword puzzles in your app.
NEW: LetterPop Animation #
Crossword
#
Crossword is a comprehensive solution for seamlessly integrating a crossword puzzle-solving user
interface into your Flutter app. With this package, you can effortlessly provide users with an
interactive and enjoyable crossword puzzle-solving experience within your application.
Features #
-
Customizable Crossword Widget: The package offers a customizable crossword widget that can be easily integrated into any Flutter app. You can adjust the widget's appearance, size, and layout to match your app's design and theme.
-
User-Friendly Interface: The user interface is designed with simplicity and ease of use in mind. Users can intuitively navigate through the puzzle, pan, and select the letters to choose words.
-
Clue Management: Manage crossword clues effortlessly with this package by passing the list of words into the
Crosswordwidget.
Getting started #
Installation #
You just need to add crossword as
a dependency in your pubspec.yaml file.
dependencies:
crossword: ^1.3.2
Import the package in your Dart code and instantiate the Crossword widget.
Example #
To get started add the Crossword widget.
letters: takes all the letters as a two-dimentionalListspacing: controls thehorizontalandverticalspacing in between letters theCrossword panelhints: takes aListof words as clues
Crossword(
letters: const [
["F", "L", "U", "T", "T", "E", "R", "W", "U", "D", "B", "C"],
["R", "M", "I", "O", "P", "U", "I", "Q", "R", "L", "E", "G"],
["T", "V", "D", "I", "R", "I", "M", "U", "A", "H", "E", "A"],
["D", "A", "R", "T", "N", "S", "T", "O", "Y", "J", "R", "M"],
["O", "G", "A", "M", "E", "S", "C", "O", "L", "O", "R", "O"],
["S", "R", "T", "I", "I", "I", "F", "X", "S", "P", "E", "D"],
["Y", "S", "N", "E", "T", "M", "M", "C", "E", "A", "T", "S"],
["W", "E", "T", "P", "A", "T", "D", "Y", "L", "M", "N", "U"],
["O", "T", "E", "H", "R", "O", "G", "P", "T", "U", "O", "E"],
["K", "R", "R", "C", "G", "A", "M", "E", "S", "S", "T", "S"],
["S", "E", "S", "T", "L", "A", "O", "P", "U", "P", "E", "S"]
],
spacing: const Offset(30, 30),
onLineDrawn: (List<String> words) {},
textStyle: const TextStyle(
color: Colors.black, fontSize: 16, fontWeight: FontWeight.bold),
lineDecoration: const LineDecoration(
lineGradientColors: [
[Colors.blue, Colors.black, Colors.red],
[Colors.orange, Colors.black],
],
strokeWidth: 26,
lineTextStyle: TextStyle(
color: Colors.white, fontSize: 16,
fontWeight: FontWeight.bold),
),
hints: const ["FLUTTER", "GAMES", "UI", "COLORS"],
)
Additional parameters #
initialLineList: Accepts aListofLineOffsetto add initial lines to the crossword -- ALineOffsetis a class that takes thestartandendpositions of the lineacceptReversedDirection: accepts aboolto identify while creating the words by touching in the reversed direction, is enabled or notdrawCrossLine: accepts abool, and identifies if the user can interact in theCrossdirection or not.drawVerticalLine: accepts abool, and identifies if the user can interact in theVerticaldirection or not.drawHorizontalLine: accepts abool, and identifies if the user can interact in theHorizontaldirection or not.
drawCrossLine,drawVerticalLine,drawHorizontalLinecan't be set asfalsealtogether.
lineDecoration: Decorate lines to update colors based on the input and cluestextStyle: Add styles to the crossword letterstransposeMatrix: Transpose the 2x2 matrixalowOverlap: Accepts aboolto identify if the user can overlap the words or notaddIncorrectWord: Accepts aboolto identify if the user can draw incorrect lines or not
Line Decoration - parameters #
lineGradientColors: Accepts aListofListofColorsto update the gradient colors of the lines.incorrectGradientColors: Accepts aListofColorsto update the gradient colors of the lines when the user draws an incorrect line.correctGradientColors: Accepts aListofColorsto update the gradient colors of the lines when the user draws a correct line.strokeWidth: Accepts adoubleto update the width of the lines.strokeCap: Accepts aStrokeCapto update the stroke cap of the lines.lineTextStyle: Accepts aTextStyleto update the style of the words which are drawn by the user.
Reveal Letter Animation #
- Use a Global Key to access the
Crosswordwidget and call theanimatemethod to animate the letter decoration.
final GlobalKey<CrosswordState> _crosswordState = GlobalKey();
- Pass the
GlobalKeyto theCrosswordwidget
Crossword(key: _crosswordState);
- Access the
Crosswordwidget using the global key and call theanimatemethod to animate the letter
//offset is the position of the letter in the crossword
crosswordState.currentState!.animate(offset: const Offset(7, 3));
-
revealLetterDecoration: Accepts aRevealLetterDecorationto animate the decoration of the letters -
'letterPopDecoration': Accepts a
LetterPopDecorationto animate the decoration of the specific letter onTouchEvent
Contributions #
Contributions are welcome! If you find a bug or want to add a feature, please file an issue