티스토리 뷰
1. 가입하고 아이디 만들기(GitHub로그인 하면 편하다!)
2. pubspec.yaml에 추가하기
dependencies:
flutter:
sdk: flutter
algolia: ^1.1.2 # Ensure you're using the latest version
3. dart 클래스 만들기
import 'package:algolia/algolia.dart';
class AlgoliaService {
static final Algolia _algolia = Algolia.init(
applicationId: 'YourApplicationID', // Replace with Your Application ID
apiKey: 'YourAdminAPIKey', // Replace with Your Admin API Key
);
static Algolia get algolia => _algolia;
}
4. 코드 짜기
import 'package:flutter/material.dart';
import 'algolia_service.dart';
class SearchScreen extends StatefulWidget {
@override
_SearchScreenState createState() => _SearchScreenState();
}
class _SearchScreenState extends State<SearchScreen> {
String _searchTerm = '';
List<AlgoliaObjectSnapshot> _results = [];
_search() async {
AlgoliaQuery query = AlgoliaService.algolia.instance.index('your_index_name').query(_searchTerm);
AlgoliaQuerySnapshot querySnap = await query.getObjects();
setState(() {
_results = querySnap.hits;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Algolia Search'),
),
body: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10.0),
child: TextField(
onChanged: (val) {
setState(() {
_searchTerm = val;
});
_search();
},
decoration: InputDecoration(
prefixIcon: Icon(Icons.search),
hintText: 'Search...',
),
),
),
Expanded(
child: _results.length == 0
? Center(child: Text('No Results Found'))
: ListView.builder(
itemCount: _results.length,
itemBuilder: (context, index) {
AlgoliaObjectSnapshot snap = _results[index];
return ListTile(
title: Text(snap.data['name']), // Adjust according to your data
subtitle: Text(snap.data['description']), // Adjust according to your data
);
},
),
),
],
),
);
}
}